Como posso saber quanto tempo o Watchdog deve esperar para interromper todos os processos?

Como posso saber quanto tempo o Watchdog deve esperar para interromper todos os processos?

Eu tenho um servidor que é monitorado pelo Watchdog e ocasionalmente é reinicializado devido a falhas no hardware de rede que não consigo substituir no momento. Pelo que li, o Watchdog envia um SIGTERM para todos os processos, solicitando um desligamento seguro, e após pouco tempo, envia um SIGKILL, que interromperá o processo imediatamente. Porém, neste caso, leva à corrupção de dados, uma vez que o processo principal de importância ainda não está totalmente encerrado e possui dados não gravados.

Quanto tempo dura essa pausa que o Watchdog leva entre pedir que todos os processos parem e forçá-los a parar? Está conectado ao Watchdog, definido em watchdog.conf (se foi, nunca foi documentado na página de manual) ou é igual a outra configuração do sistema? Como posso alterar esta configuração?

Editar: encontrei o tempo limite, mas ainda estou procurando instruções sobre como reconstruir e integrar adequadamente ao sistema.

Responder1

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

atraso sigterm = 5

(comentado no arquivo de exemplo). Observe que a versão experimental 'V6' não deve mais ser usada, pois a 5.15 possui praticamente todos os seus recursos e também diversas correções de bugs. Observe também que o site 'sat' poderá ser encerrado no final de 2019 devido à retirada do financiamento do NERC.

Responder2

Dea fonte Watchdog, shutdown.clinha 445, a pausa é conectada ao Watchdog e dura cinco segundos.

Responder3

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

http://www.sat.dundee.ac.uk/~psc/watchdog/Linux-Watchdog.html

A resposta curta é que você precisa configurar seu sistema para construir 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

Vá para o diretório de código e prepare-se para compilar:

cd watchdog-code
autoreconf -i
./configure

Em seguida, vá 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 installou pelo menos faça cópias de backup dos programas fornecidos pelo sistema. Eles estão inchados em comparação com os do sistema devido aos símbolos de depuração. Você pode usar o comando strip se quiser reduzir seu tamanho.

Você pode dizer quanto tempo você precisa para o SIGTERM funcionar?

Editado para adicionar:

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

informação relacionada