Gibt es eine Logdatei die bei /etc/security/limits.conf
Überschreitung der eingestellten Werte eine Meldung protokolliert?
Wenn die Werte in der obigen Datei zu eng sind, werden den Clients, die die auf dem Server gehostete Website verwenden, Fehler wie angezeigt [FATAL] failed to allocate memory
. Aber ich lasse mich davon nicht einschüchtern. Gibt es also ein Protokoll?
Wenn nicht, gibt es eine Möglichkeit, eine Protokollierung der Überschreitung der Werte zu veranlassen?
Antwort1
limits.conf ist für das, was Sie versuchen, ein zu stumpfes Instrument.
cgroups legen Limits fest und übernehmen die Abrechnung für Sie, die Dokumentation ist allerdings etwas undurchsichtig!https://www.kernel.org/doc/Documentation/cgroups/memory.txt
Antwort2
Gibt es eine Protokolldatei, die Informationen protokolliert, wenn die in /etc/security/limits.conf festgelegten Werte überschritten werden?
Nein.
Alle diese Werte erreichen letztendlich die Grenzen der Prozessressourcen ( man setrlimit
), und wenn diese erreicht werden, gibt es keinen universellen Mechanismus zum Ausgeben einer zu protokollierenden Warnung.
Antwort3
Wenn Ihr Problem eine fehlgeschlagene Speicherzuweisung ist, können Sie dieses Skript auch verwenden, um den Prozentsatz des verbleibenden freien Speichers zu überwachen.
#!/bin/bash
# you can adjust 0.20 meaning 20% to percentage of memory free you want
output=$(free | grep "Swap" | awk '{if (($4/$2) < 0.20) print "memory low"}')
if [[ "$output" != "" ]]; then
echo "..." | mail -s "Memory low on <host>" <monitoring email>
fi
Speichern Sie es in einer Skriptdatei (z. B. memmon.sh) und fügen Sie es zu crontab hinzu. Es sendet eine E-Mail und schreibt eine Protokolldatei, wenn festgestellt wird, dass nur noch wenig freier Speicher vorhanden ist (je nach Bedingung).
# Ex. monitor every 3 min.
*/3 * * * * /home/user/memmon.sh >> /home/user/memmon.log