Como posso saber por quanto tempo o Watchdog aguarda para interromper todos os processos?

3

Eu tenho um servidor que é monitorado pelo Watchdog e experimenta reinicializações ocasionalmente devido a um hardware de rede com defeito que não posso substituir no momento. Ao ler, o Watchdog envia um SIGTERM para todos os processos, solicitando um desligamento seguro e, após um curto período, envia um SIGKILL, que interromperá o processo imediatamente. No entanto, neste caso, isso leva à corrupção de dados, pois o processo principal de importância ainda não foi totalmente encerrado e possui dados não gravados.

Por quanto tempo essa pausa é realizada pelo Watchdog, solicitando que todos os processos parem e forçando-os a parar? É hardwired dentro do Watchdog, definido no watchdog.conf (se foi, ele nunca foi documentado na manpage), ou o mesmo que outro sistema? Como posso alterar essa configuração?

Editar: descobri o tempo limite, mas ainda estou procurando instruções sobre como reconstruí-lo e integrá-lo ao sistema corretamente.

    
por hexafraction 26.03.2013 / 20:38

3 respostas

1

A versão oficial do 5.15 no Sourceforge agora tem essa opção incluída. Pode ser configurado no arquivo watchdog.conf usando a linha:

sigterm-delay = 5

(comentado no arquivo de exemplo). Por favor, note que a versão experimental 'V6' não deve ser mais utilizada, pois o 5.15 tem praticamente todas as suas características e várias correções de bugs também. Observe também que o site 'sat' pode ser desativado no final de 2019 devido à retirada do financiamento do NERC.

    
por 10.05.2019 / 20:49
1

Eu postei algumas informações sobre como construir, configurar e testar o daemon de watchdog do Linux aqui:

link

A resposta curta é que você precisa configurar seu sistema para criar este projeto:

sudo apt-get build-dep watchdog
sudo apt-get install build-essential automake libtool

Em seguida, obtenha o código-fonte, que você provavelmente já possui, mas o mais recente pode ser feito com estas etapas:

sudo apt-get install git
git clone git://git.code.sf.net/p/watchdog/code watchdog-code

Mova para o diretório de código e prepare-se para a compilação:

cd watchdog-code
autoreconf -i
./configure

Em seguida, para o diretório de origem e compile-o:

cd src
make clean
make

No diretório atual, você terá os novos binários. Teste-os antes de torná-los "ativos" usando sudo make install ou, pelo menos, faça cópias de segurança dos programas fornecidos pelo sistema. Eles estão inchados comparados aos do sistema devido aos símbolos de depuração, você pode usar o comando strip se quiser reduzir o tamanho deles.

Você pode dizer que tipo de tempo você precisa para o SIGTERM funcionar?

Editado para adicionar:

Se você estiver usando o pull do GIT atual (14 de setembro de 2013), edite o shutdown.c e, na linha 363, altere "safe_sleep (4);" para ter seu valor de tempo limite desejado em segundos. Se estiver editando o código para o watchdog fornecido pelo sistema (como mencionado acima), tome cuidado para não dormir () por mais do que o timeout de hardware (normalmente 60 segundos), pois o sistema irá simplesmente reinicializar! Essa foi a razão da função safe_sleep (), manter o watchdog alimentado enquanto espera.

    
por Paul Crawford 13.09.2013 / 21:49
1

De a fonte do Watchdog, shutdown.c , linha 445 , a pausa é gravada no Watchdog e é de cinco segundos.

    
por hexafraction 26.03.2013 / 21:36