Próbuję uruchomić program (Resque), ale napisanie pliku pid zajmuje trochę czasu. Dlatego myślę, że Monit uważa, że program się nie uruchomił i uruchamia jeszcze jeden lub dwa programy przed zapisaniem pliku pid pierwszego.
Jak mogę opóźnić czas sprawdzania Monit tylko dla tego procesu? Czy powinienem rozwiązać to w inny sposób?
Odpowiedzi:
Jak mogę opóźnić czas sprawdzania Monit tylko dla tego procesu?
To, co próbujesz osiągnąć, można osiągnąć za pomocą funkcji monitorowania „ CZASU SERWISU ”
Dokumentacja Monit mówi
Jedną z metod dostosowania ankiety serwisowej jest
KAŻDY [liczba] CYKLI
Przykład:
Czy powinienem rozwiązać to w inny sposób?
Zrobiłem też pierwszą próbę monitorowania zadań resque za pomocą monit, ponieważ monit jest bardzo lekkim demonem, ale ostatecznie został rozliczony z BOGIEM. Wiem, wiem, że BÓG jest bardziej głodny zasobów w porównaniu do monitorów, ale w przypadku resque okazało się, że jest to dobre dopasowanie.
źródło
Możesz sprawdzić określoną usługę w innym przedziale czasu niż domyślny ...
Zobacz CZAS ODPOWIEDZI SERWISU w dokumentacji Monit.
Przykładem twojego programu Resque byłoby sprawdzenie innej liczby cykli:
lub z sekcji przykładów:
lub możesz wykorzystać kontrole w stylu cron.
lub jeśli masz powolne uruchamianie, możesz wydłużyć limit czasu w poleceniu uruchomienia usługi:
źródło
with timeout 90 seconds
było dokładnie to, czego chciałem. Dzięki.Możesz także sprawdzić, czy coś nie działało X razy prosto:
Lub X razy w ankietach Y:
Lub oba:
( stąd )
źródło
Członek mojego zespołu wymyślił dość sprytne rozwiązanie, które pozwala monitorowi sprawdzać często (co minutę) , ale gdy spróbuje ponownie uruchomić usługę (co zajmuje ~ 10 minut), poczeka określony okres karencji przed próbą uruchomienia jeszcze raz.
Zapobiega to zbyt długiemu czekaniu między czekami, co w połączeniu z wolnym startem ma znacznie większy wpływ na klientów. Działa przy użyciu skryptu pośredniego, który działa jak flaga, wskazując, że monitor podejmuje już działania od ostatniej awarii.
Jeśli bambus (wolno uruchamiająca się aplikacja internetowa) nie działa przez 3 minuty z rzędu, uruchom ponownie, ALE tylko wtedy, gdy skrypt restartu jeszcze nie działa.
Wywołany skrypt ma określony sen, który czeka DŁUŻEJ, a następnie najwolniejszy czas rozpoczęcia usługi (w naszym przypadku spodziewamy się, że skończy się za ~ 10, więc śpimy przez 15)
źródło
Obecna wersja Monit (5.16) obsługuje limit czasu dla skryptów startowych ze składnią:
W docs stwierdzić:
To właśnie zrobi wartość limitu czasu.
źródło
timeout
Powinny mieć zastosowanie zarówno do startów i ponownym uruchomieniu. O ile rozumiem, opóźnia się zanim Monit sprawdzi, czy: a) działa, b) tworzony jest oczekiwany plik PID, c) proces z oczekiwanym PID jest obecnie uruchomiony. Miałem pewne problemy z uruchomieniem go, gdy określona aplikacja była tylko skryptem, który rozwidlił prawdziwy proces, a następnie powrócił, nie wiedząc, co się dzieje z tym procesem. Sprawienie, by zadziałało w tym przypadku było uciążliwe.START DELAY
.