Inirestart ng aming watchdog ang mga serbisyo na sinadya naming ihinto

Ops

Isa sa aming watchdog ang nagsisimula ng anumang serbisyo namin na enabled ngunit hindi tumatakbo. Dalawang beses noong Oktubre, pinasimulan nito ang mga serbisyo na sinadya naming ihinto. Sa ikalawang pagkakataon, nakaranas ng mga error ang mga bisita sa isa sa aming mga site sa loob ng humigit-kumulang 45 minuto.

Bakit umiiral ang watchdog na iyon

Ang isang serbisyo na malinis na lumalabas kapag nakatanggap ng SIGTERM, halimbawa dahil pinatay ito ng pangalan ng isang bagay, ay hindi itinuturing na "failed" para sa systemd. Hindi ito ibinabalik ng Restart=on-failure, at hindi ito nililista ng systemctl --failed. Nanatiling patay ito hanggang sa mapansin ng isang tao. Kaya naman hinahanap ng watchdog ang mga serbisyo na enabled ngunit hindi tumatakbo, at pinapatakbo ang mga ito.

Ang problema ay mukhang eksaktong katulad ang isang serbisyo na iyong hininto nang manu-mano.

Ang unang pagkakataon

Noong 7 Oktubre, hininto namin ang isang video worker gamit ang systemctl stop noong 12:47 upang i-edit ang job queue nito. Noong 12:55, tumatakbo na naman ito: pinasimulan ito ng watchdog.

Ang ikalawang pagkakataon

Noong 21 Oktubre, kailangan namin ang memorya ng makina na nagse-serve rin ng dalawa sa aming mga site para sa isang model test. Pinatay ng isang script ang mga web app ng mga site, isang sync job at isang database container, muli gamit ang systemctl stop. Humigit-kumulang limang minuto ang lumipas, isang timer na binabantayan ang mga site, at noong 19:14 ang watchdog, ang nagbalik ng tunnel at ng mga web app.

Tumanggap na naman ng traffic ang tunnel, ngunit hindi makasagot ang mga web app: hawak ng model na sinusubukan ang 114 GiB ng memorya ng makina. Mula humigit-kumulang 19:14 hanggang 20:00, nakatanggap ng mga 502 error ang ilang bisita. Noong 20:00, dinedisable namin ang tunnel, ang mga web app at ang sync job, at hininto ang watch timer.

Ang patakaran na ginagamit namin ngayon

Dalawa pang systemd trap mula sa parehong buwan

Factory Floor ay binabantayan ang mga naka-enable na serbisyo na hindi tumatakbo. Sa default, iniuulat lamang nito ang mga ito, at sinisimulan lamang ang mga ito kung buksan mo ang opsyon na iyon. Mula sa bersyon 1.0.3, sinasabi rin ng alerto nito kung paano i-pause ang isang serbisyo nang sinasadya, at sinasabi rin ng runbook nito ang parehong bagay.

Na-update: