Como diagnosticar uma lentidão?

Meu site tem apresentado uma lentidão leve e repentina no carregamento de páginas ultimamente. Tive um problema em que um backup foi gerado e excedeu o espaço no meu volume digital ocean, derrubando o site. Desde então, tenho tido dificuldades em reconstruir o site. Esses eventos podem estar relacionados com base no timing. Atualmente, o site parece estar em um estado estável, mas apenas mais lento do que o que estou acostumado.

Eu poderia entrar em mais detalhes sobre o que aconteceu, mas prefiro fazer uma pergunta mais geral. Quais são algumas técnicas para diagnosticar a causa de uma lentidão? Meu droplet está com uma utilização média de 20% de CPU, então pareço ter recursos suficientes (4 GB de Memória / 2 vCPUs AMD / 80 GB de Disco, ~15 mil visualizações de página por dia)

Quaisquer dicas são apreciadas.

3 curtidas

Meu primeiro ponto de contato seria
vmstat 5 5
na linha de comando.

3 curtidas

Obrigado pela sugestão. Não estou familiarizado com o comando, há algo em particular que eu deva procurar?
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st\n 1 0 475136 144304 20296 1786100 2 3 2622 447 44 50 19 3 72 1 4\n 0 0 475136 143076 20304 1785312 0 0 65 25 622 584 2 1 95 0 1\n 0 0 475136 141080 20456 1789144 0 0 800 3 459 473 2 1 96 0 1\n 3 0 475136 143092 20572 1783408 0 17 11598 51 733 966 14 6 67 2 12\n 0 0 475648 134688 20376 1791036 0 81 38915 394 1323 1784 10 8 61 8 13\n

1 curtida

Obrigado! Se você tivesse falta de memória, os números do cache seriam pequenos e, se estivesse paginando muito, as colunas si e so seriam grandes. Mas não é o caso.

Vemos um grande pico em bi e bo, que é tipicamente atividade de disco. Eu me pergunto se algo em algum lugar está construindo, reparando ou escaneando algo.

Talvez tente executar
ps auxrc
a cada cinco segundos por cerca de um minuto, para ver se consegue capturar um processo ocupado em ação.

Existem outras utilidades que podem não estar instaladas: talvez procure por “Como Monitorar IO de Disco em um Sistema Linux” ou similar.

Vale a pena notar que, se você tiver dúvidas sobre a integridade do seu sistema, reconstruí-lo a partir de um backup pode ser o caminho mais rápido. Mas certifique-se de ter uma cópia externa do backup, se não duas, em caso de acidente. E, idealmente, faça a instalação em uma nova instância e mantenha a existente por perto até que a nova esteja funcionando bem.

5 curtidas

Este é um ótimo conselho, obrigado!

Estou com 80% de uso de memória. Isso é normal? A queda ocorreu porque parei e reiniciei o aplicativo usando o launcher.

droplet: 4 GB de Memória / 2 vCPUs AMD / 80 GB de Disco

Criei um novo droplet, restaurei um backup do fórum (sem imagens) e o comportamento é semelhante.

Saída do htop, classificada por memória:

80% não me parece problemático.

Mais interessante é que você tem muitos processos sidekiq e, ainda assim, vejo a anotação “0 de 5 ocupados” - você tem mais de 5. Você também parece ter muitos threads unicorn.

Sugiro um novo tópico aqui, com sua saída htop, incluindo sua configuração yml sobre se você ajustou sua contagem de unicorn. Pergunte se este conjunto de processos parece razoável.

Tenho um htop muito semelhante no mesmo VPS (processador diferente, no entanto) e não alterei nada do padrão.

Sem saber nada, eu diria que isso mostra apenas uma coisa: não há muito tráfego, se houver, naquele momento.

1 curtida

Ah sim, eu deveria ter verificado meu próprio htop: muito semelhante.

Outra ideia bem diferente, para a observação original de ‘uma lentidão’ - ativar o mini-profiler usando Alt-P, então acessar uma página grande típica do seu fórum e ver quais consultas estão sendo feitas e quanto tempo elas levam, clicando no valor do tempo que aparece no canto superior direito.

1 curtida

Consegui fazer um apt upgrade e também um rebuild. Este problema: Pups error on rebuild 🐕 estava me impedindo de fazer o rebuild por um tempo

Desde o rebuild, parece que melhorou. No entanto, não gosto de operar por sensação neste caso, prefiro ter análises e dados mensuráveis. Agradeço as dicas @Ed_S, elas serão úteis para monitoramento futuro.

Estou me perguntando se é possível capturar alguns desses dados de profiling para mostrar a “saúde” da instância através da página de administração. Talvez uma ideia de plugin potencial ou um recurso principal futuro?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.