Wbudowaliśmy system Linux bez wymiany.
Obecnie musimy podnieść alarm, gdy% wykorzystania pamięci wzrośnie ponad trzykrotnie. I uruchom ponownie, gdy% wykorzystania pamięci wzrośnie powyżej (wyższego) progu.
Dlaczego chcemy to zrobić: Jeśli jakiś program wycieknie, możemy wykonać restart bezpieczeństwa, zanim jądro zacznie zabijać nasze procesy (co może prowadzić do uszkodzenia danych lub niedostępności).
Ale mamy problem:
Jak policzyć użycie pamięci-%, które można wykorzystać do naszych celów?
Próbowaliśmy policzyć zużycie pamięci, używając wartości / proc / meminfo:
/ # cat /proc/meminfo
MemTotal: 126744 kB
MemFree: 58256 kB
Buffers: 16740 kB
Cached: 31308 kB
SwapCached: 0 kB
Active: 37580 kB
Inactive: 24000 kB
Bezskutecznie:
(MemTotal - MemFree)
nie jest użyteczny, ponieważ zawiera na przykład pamięci podręczne.
(MemTotal - MemFree - Buffers - Cached)
zignorował efekt Inactive
. Daje to również zbyt duże wartości zużycia pamięci.
(MemTotal - MemFree - Buffers - Cached - Inactive)
jest bezużyteczny, ponieważ wynik może być ujemny.
Nazwij to jako alert.sh i wykonaj polecenie:
chmod +x alert.sh
Skonfiguruj crona, aby uruchamiał ten skrypt co 10 minut
Pamiętaj, aby zastąpić „512” całkowitą pamięcią serwera w MB, a „[email protected]” faktycznym adresem e-mail. Spowoduje to wysłanie powiadomienia e-mail za każdym razem, gdy wykorzystanie pamięci przekroczy 95%, i ponownie uruchomi usługę „nazwa_usługi”, jeśli osiągnie 90%
źródło
Możesz użyć skryptu powłoki w cron z bezpłatnym poleceniem do monitorowania pamięci i działania zgodnie z jej wartościami. Na przykład, aby monitorować pamięć RAM:
Zamiast powtarzać dane wyjściowe, możesz ewaluować wartości do żądanych limitów i wysyłać pocztą, ponownie uruchamiać komputer lub dowolną inną akcję:
Następnie dodajesz go do crontab, aby uruchamiał się w żądanych odstępach czasu.
źródło
innym przydatnym narzędziem z pakietu sysstat jest sar.
Aby uzyskać informacje o pamięci, użyj:
Zdecydowanie mógłbym użyć więcej pamięci RAM na tym polu.
źródło