servidor trava aleatoriamente sem entradas de log

2

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?

    
por Thorsten Staerk 13.02.2014 / 21:53

1 resposta

0

Examinando o log de erros do switch FC, encontramos uma porta com um enorme log de erros. Desabilitamos esta porta e não vimos o erro por um fim de semana inteiro agora. Então eu acho que esse erro foi causado por um caminho de fibrechannel quebrado. Geralmente, para minha informação, tal erro deve ser detectado (por exemplo, por multipathd), registrado e corrigido automaticamente. Então eu suponho que temos um dos casos de uma falha de caminho não detectado por fibrechannel aqui.

    
por 31.03.2014 / 11:33