Eu tenho tido um pico de carga na última semana. Isso geralmente ocorre uma ou duas vezes por dia. Eu consegui identificar no iotop que [jbd2 / md1-8] está usando 99,99% de IO. Durante os tempos de carregamento alto, não há tráfego intenso para o servidor.
As especificações do servidor são:
- AMD Opteron 8 núcleo
- 16 GB de RAM
- 2x2.000 GB 7.200 RPM HDD Raid Software 1
- Cloudlinux + Cpanel
- O MySQL está devidamente ajustado
Além dos picos, a carga geralmente é de aproximadamente 0,80.
Eu procurei, mas não consigo encontrar o que [jbd2 / md1-8] faz exatamente. Alguém já teve esse problema ou alguém conhece uma possível solução?
Obrigado.
ATUALIZAR:
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
16:05:36 399 be/3 root 0.00 B/s 38.76 K/s 0.00 % 99.99 % [jbd2/md1-8]
linux
software-raid
high-load
Alex
fonte
fonte
iostat
? Você pode executar um pouco disso (digamosiostat 5
) um pouco e compartilhar a saída?Respostas:
Esta não é realmente uma resposta, pois não há contexto suficiente para fornecer a causa exata, mas é uma descrição de como eu consegui rastrear isso quando aconteceu comigo.
Notei que eu
jbd2/md0-8
continuava aparecendo no topoiotop
. Eu olhei/sys/kernel/debug/tracing/events/jbd2
para ver quais opções existem para determinar o quejbd2
estava fazendo.NOTA-1: Para ver a saída para eventos de rastreamento de depuração
cat /sys/kernel/debug/tracing/trace_pipe
- eu tinha isso em execução no terminal ao ativar / desativar rastreamentos.NOTA-2: Para ativar eventos para rastreamento, por exemplo
echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
. Desativarecho 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
.Comecei ativando
/sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
- mas não havia nada que parecesse particularmente interessante no resultado. Tentei alguns outros eventos para rastrear e, quando habilitei/sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enable
, vi que estava ocorrendo a cada segundo:Parecia que estava relacionado a
sync(2)
/fsync(2)
/msync(2)
, então procurei alguma maneira de vincular isso a um processo e encontrei o seguinte:Quando o habilitei, vi a seguinte saída:
Isso me deu o nome do processo / id - e depois de fazer mais algumas depurações desse processo (
nzbget
), descobri que estava fazendo afsync(2)
cada segundo. Depois que eu mudei sua configuração (FlushQueue=no
acho que não documentada, achei na fonte) para impedir que isso acontecesse por segundo,fsync(2)
o problema desapareceu.Minha versão do kernel é
4.4.6-gentoo
. Acho que havia algumas opções que habilitei (manualmente ou commake oldconfig
) em algum momento da configuração do kernel para obter/sys/kernel/debug
esses eventos - então, se você não tiver, talvez procure na Internet para obter mais informações sobre como habilitar isto.fonte
Parece ser uma coisa relacionada à atualização do diário. De quantos discos o RAID de software é composto. Você pode me mostrar o comando usado para criá-lo.
Você também pode colar a saída dumpe2fs. Primeiro, identifique o dispositivo físico em que você vê a carga. Use df para saber isso. Então,
Para o seu caso, pode ser / dev / md0.
Além disso, execute isso.
No momento da edição de alto IO.
Eu não conheço o cloudlinux, mas é a ferramenta blktrace disponível nele.
fonte