W firmie, w której teraz pracuję, jest starsza usługa, a jej skrypt inicjujący używa starego SysvInit, ale działa na systemd (CentOS 7).
Ponieważ jest dużo obliczeń, zakończenie usługi zajmuje około 70 sekund. Nie skonfigurowałem żadnego limitu czasu dla systemd i nie zmieniłem domyślnych konfiguracji o /etc/systemd/system.conf
, ale mimo to po uruchomieniu service SERVICE stop
mojej usługi upływa limit czasu po 60 sekundach.
Sprawdzam za pomocą journalctl -b -u SERVICE.service
tego dziennika:
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]
Próbowałem już zmiany DefaultTimeoutStopSec
własności w /etc/systemd/system.conf
celu 90s
, ale limit czasu nadal się dzieje.
Czy ktoś ma pojęcie, dlaczego upływa limit czasu w latach 60.? Czy jest gdzieś skonfigurowana ta wartość limitu czasu? Czy mogę to sprawdzić?
Ta usługa działa z java 7 i do demonizacji korzysta z JSVC . Skonfigurowałem -wait
parametr z wartością 120
.
TimeoutSec=infinity
- czy nie byłoby możliwe, aby ten blok uruchomił się ponownie na czas nieokreślony? Co się stanie, jeśli proces zakończy się na zawsze? Sugerowałbym dużą ilość, jak5min
, ale prawdopodobnie nieinfinity
...systemd
ofertysystemctl edit
(imask
wyłączyć je brutalną siłą, w przeciwieństwie dodisable
) w tym właśnie celu. Nigdy nie powinieneś edytować plików/usr/lib/systemd
.TimeoutSec=infinity
nie działało tutaj, użyłemTimeOutSec=900
(15 min) i to uratowało mój tyłek. - Musiałem uruchomićsystemctl daemon-reload
później, zanim ponownie uruchomię usługę.Uruchamianie
systemctl show SERVICE_NAME.service -p TimeoutStopUSec
mogłem przynajmniej zobaczyć zbiór limitu czasu przez Systemd na moje usługi.Zmieniłem skrypt na zwykły plik jednostkowy, aby działał poprawnie.
źródło