Como descobrir o que causa saltos aleatórios na média de carga?

Como descobrir o que causa saltos aleatórios na média de carga?

Estou tendo um problema com as médias de carga em minhas caixas dedicadas do Debian GNU/Linux. Ambos (2 deles) executam MySQL + um software de servidor de jogo personalizado - um pequeno "MMORPG" (nem um pouco enorme). O uso da CPU e da memória estão OK. O uso da CPU geralmente é <5%. O uso de RAM chega a algo em torno de 80 a 90%, mas sempre há um monte livre, em cache ou em buffer. O uso de swap é 0.

Ao monitorar cargas com uptime, top ou qualquer outro comando que mostre isso, ele salta aleatoriamente para algo como 4 ou até mais. Isto é obviamente um problema, especialmente considerando que ambas as caixas têm "apenas" 2 núcleos. Após o salto mágico da média de carga, ela começa a diminuir suavemente, sugerindo que foi um salto realmente temporário no uso de recursos. O uso da CPU é sempre de 0 a 5%, no máximo 10%, sempre que consigo observar a frequência de atualização de 1 segundo por cerca de 15 minutos.

Eu tentei algumas ferramentas como htop, vmstat, dstat etc. sem sucesso. Aqui está um registro para quem estiver interessado:

http://www.k-zodron.com/log.txt

Além da ocorrência nas linhas iniciais, o uso da CPU quase não aumenta enquanto a carga salta para valores astronômicos. Não sou superespecialista nessas coisas, mas gravar 4 KB em um disco também não parece ser um gargalo de E/S.

Também executei o MySQL Tuning Primer Tool e ele relata que está tudo bem.

Alguma idéia de como rastrear e resolver o problema? Obrigado!

Editar

http://www.k-zodron.com/munin/

Estatísticas de Munin, atualizadas a cada 5 a 10 minutos.

Responder1

será que o mysql está usando tabelas temporárias? você pode adicionar alguns gráficos munin com io stat ..? Os números de io no log fornecido parecem incrivelmente baixos.

qual é o seu conjunto de trabalho - os dados cabem confortavelmente na memória [parece que sim]? você faz de vez em quando muitas gravações no sql [do log, ao que parece - nenhuma]?

é possível que de repente você tenha um aumento no número de solicitações simultâneas [sql ou para seu servidor personalizado]? o que cat /proc/net/ip_conntrack|wc -l diz? o que isso mostra durante picos de carga?

você pode ativar o mysqlregistro de consulta lento- por exemplo, tudo > 1 ou 2 segundos?

seus discos estão diretamente conectados ao servidor ou talvez seja iscsi/nfs? você pode verificar o status de integridade dos discos [smart]/status de ataque? talvez uma das unidades esteja falhando ... ou talvez você possa executar um benchmark simples de disco io fora do pico para garantir velocidades decentes de leitura/gravação.

ou talvez algo feio apareça no dmesg?

editar: verifique se netstat |wc -l está correlacionado com load

verifique se ps axms|wc -l está correlacionado com load

verifique se lsof |wc -l está correlacionado com carga

[de preferência hackear pequenos plugins munin para colocá-los nas paradas].

Responder2

Você precisa de mais métricas. Eu uso gânglios para coletar valores diferentes, os clássicos: CPU, memória, rede, E/S de disco, etc; métricas baseadas em serviços: solicitações http, consultas mysql e consultas lentas, etc; e métricas baseadas em aplicativos, ou seja, quantos usuários estão conectados ao jogo ou quantas vezes o aplicativo chama uma função crítica.

Analisar essas informações e compará-las com os picos de carga pode dar uma ideia melhor do que está acontecendo no seu sistema.

informação relacionada