Na empresa em que estou trabalhando agora, existe um serviço legado e seu script init está usando o SysvInit antigo, mas está executando o systemd (CentOS 7).
Como há muita computação, esse serviço leva cerca de 70 segundos para terminar. Não configurei nenhum tempo limite para systemd e não alterei as configurações padrão em /etc/systemd/system.conf
, mas ainda assim quando executo service SERVICE stop
meu serviço está atingindo o tempo limite após 60 segundos.
Verificando com journalctl -b -u SERVICE.service
eu acho este log:
Sep 02 11:27:46 service.hostname systemd[1]: Stopping LSB: Start/Stop
Sep 02 11:28:46 service.hostname SERVICE[24151]: Stopping service: Error code: 255
Sep 02 11:28:46 service.hostname SERVICE[24151]: [FAILED]
Eu já tentei alterar a DefaultTimeoutStopSec
propriedade em /etc/systemd/system.conf
para 90s
, mas o tempo limite ainda acontece.
Alguém tem alguma idéia de por que o tempo limite chega aos 60 anos? Existe algum outro lugar em que esse valor de tempo limite esteja configurado? Existe uma maneira de verificar isso?
Este serviço é executado com o java 7 e, para daemonizá-lo, ele usa JSVC . Eu configurado o -wait
parâmetro com o valor 120
.
TimeoutSec=infinity
- não seria possível que isso bloqueie uma reinicialização indefinidamente? E se demorar "para sempre" para que esse processo saia? Eu sugeriria uma grande quantidade, tipo5min
, mas provavelmente nãoinfinity
...systemd
ofertasystemctl edit
(emask
desativá-las com força bruta, em oposição adisable
) para esse mesmo objetivo. Você nunca deve editar os arquivos/usr/lib/systemd
.TimeoutSec=infinity
não funcionou aqui, useiTimeOutSec=900
(15 min) e isso salvou meu traseiro. - Eu precisava executarsystemctl daemon-reload
depois, antes de reiniciar o serviço.Em execução
systemctl show SERVICE_NAME.service -p TimeoutStopUSec
, pude ver pelo menos o tempo limite definido pelo systemd para o meu serviço.Mudei o script para um arquivo de unidade normal, um para que funcione corretamente.
fonte