Qual é a técnica para descobrir o gargalo?

3

Eu configurei um wordpress no Digital Ocean para a menor gotícula por alguns meses.

Recentemente, meu blog se tornou viral (mais de 1.000 compartilhamentos no Facebook) e o servidor demorou mais de 50 segundos para responder (o Google Analytics mostra que há cerca de 40 pessoas no meu blog ao mesmo tempo por quase todo o dia hoje).

Eu pergunto à equipe de suporte da Digital Ocean e eles me disseram que minha memória RAM de 512 mb é muito pequena.

Mas eu uso 'free -m' e vejo

             total       used       free     shared    buffers     cached
Mem:           490        465         24         64         94        136
-/+ buffers/cache:        234        256
Swap:          999          0        999

Então eu acho que tenho 256 MB de memória disponível?

Eu disse a eles e eles disseram: 'Embora possa mostrar 100MB de memória livre, isso é provável apenas depois de ter matado alguns serviços para economizar memória'.

Mas eu uso 'top' e vejo

%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

Eu achei CPU ficar com 92 ~ 100% id, então acho que minha CPU não está ocupada.

Então, como posso encontrar o gargalo?

Eu quero saber qual é o gargalo antes de pagar mais pela atualização.

    
por 尤川豪 07.02.2015 / 14:37

2 respostas

4

Ao analisar os problemas de desempenho, é importante lembrar o 'big 4' :
-CPU
-Memory
-Disk
-Network -
Sou um grande fã de usar atop para utilização de CPU e memória, iotop para uso de disco e iftop para tráfego de rede. Lembre-se de que essas métricas são úteis apenas em tempo real quando o servidor está sobrecarregado e enfrentando esse problema.

Qualquer um dos 4 maiores acima pode causar atrasos substanciais no processamento quando uma página é solicitada. Você mencionou que este site é um blog, mas não mencionou se o conteúdo é gerado dinamicamente, o que adicionaria outra camada a essa equação - o banco de dados. Longos tempos de resposta de consulta podem causar um efeito trickle down que resulta em um longo carregamento de página.

    
por 07.02.2015 / 18:24
3

A única maneira de testar isso com certeza é executar um teste de referência como "ab" e testar o número ou os visitantes que seu site pode sustentar - e, no meio tempo, solucionar problemas relacionados ao que está acontecendo no servidor. Corra algo como:

$ ab -n 10000 -c 50 http://yoursite.com/

do seu pc ou outro servidor.

Isso atingirá seu servidor com solicitações de 10.000, mas não mais que 50 simultâneas. Antes de iniciar o teste, execute o htop em seu servidor da Web e observe a atividade conforme novos processos são gerados e as cargas de memória e CPU são alteradas.

Como você não explicou a configuração do seu servidor web (você usa apache / mod_php ou nginx / php-fpm ou algum outro combo) - não podemos nem mesmo adivinhar remotamente o consumo de memória por usuário.

Minha impressão é que, à medida que o número de usuários cresce, seu servidor começa a trocar e usar aquele 1GB adicional de memória virtual que está no disco rígido. Troca excessiva significa que os usuários estão esperando para serem atendidos por processos cuja memória está no disco, o que pode explicar a lentidão que você está observando. Mas sem informações adicionais não podemos ajudar muito.

    
por 07.02.2015 / 15:42