Meu servidor físico trava aleatoriamente e não recebo entradas de registro durante esse período. Então deixei um script ser executado:
while true; do date >>/tmp/dates; sleep 1; done & disown
Após alguns minutos, o arquivo / tmp / dates tem "buracos". Às vezes, as datas são interrompidas por 30 segundos, às vezes por 3 minutos seguidos:
Thu Feb 13 14:54:39 CET 2014
Thu Feb 13 14:54:40 CET 2014
Thu Feb 13 14:57:45 CET 2014
Thu Feb 13 14:57:46 CET 2014
O servidor não mostra alta carga ou utilização de memória. / var / log / messages não mostra nada nas vezes em que o servidor trava. No entanto, ele tem algumas mensagens sobre problemas de IO, como um link de fibrochannel tirando uma soneca. Eu estou inicializando a partir do SAN, então / estou em um dispositivo multimapter. Se eu ligar
while true; do date >>/tmp/dates; sleep 1; done & disown
while true; do date >>/dev/shm/dates; sleep 1; done & disown
Não haverá falhas em / dev / shm / dates, mas haverá falhas em / tmp / dates, então acho que não é uma situação de kernel pendente, mas uma situação pendente de IO.
Não vejo nenhum processo no estado de suspensão ininterrupta no topo. Nenhuma entrada no registro de hardware ou armazenamento que pareça relevante.
No entanto, o iostat mostra picos de alta latência em relação ao await:
03/28/14 12:32:00
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 214.00 0.00 0.00 100.00
03/28/14 12:32:01
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 214.00 0.00 0.00 100.00
03/28/14 12:32:02
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 214.00 0.00 0.00 100.00
03/28/14 12:32:03
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 1219.00 0.00 4.76 8.00 45.61 5251.48 0.82 100.40
03/28/14 12:32:04
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.99 0.00 0.00 99.60
03/28/14 12:32:05
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.01 0.00 0.00 100.40
03/28/14 12:32:06
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
dm-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.00 0.00 0.00 100.00
Será que o kernel está esperando pelo IO do armazenamento e não faz nada até que o bloco chegue? O que mais poderia ser? Como posso descobrir?