Wie starte ich Linux-Dienste neu, wenn die CPU-Auslastung 100 % erreicht?

Wie starte ich Linux-Dienste neu, wenn die CPU-Auslastung 100 % erreicht?

Ich habe einen Postfix-E-Mail-Server mit saslauthd. Immer wieder verbraucht der saslauthd-Daemon 100 % der CPU. Durch einen Neustart dieser Dienste wird die normale CPU-Auslastung wiederhergestellt.

Gibt es ein geeignetes Skript, um Dienste mit hoher CPU-Auslastung zu ermitteln und automatisch neu zu starten?

Dank im Voraus.

Antwort1

Vielleicht möchten Sie einen Blick auf monit( werfen.offizielle Seite).

Es lässt sich leicht konfigurieren, um auf hohe CPU-Auslastung zu achten und Prozesse bei Bedarf neu zu starten.

Ein einfaches Beispiel (Sie sollten es entsprechend Ihren Systempfaden und Anforderungen konfigurieren):

check process saslauth with pidfile /var/run/saslauthd/saslauthd.pid
    group mail
    start program = "/etc/init.d/saslauthd start"
    stop program = "/etc/init.d/saslauthd stop"
    if cpu > 90% for 2 cycles then restart

Dabei gilt (aus dem Handbuch entnommen):

CPU([user|system|wait]) is the percent of time the system spend in user or 
kernel space and I/O. The user/system/wait modifier is optional, if not 
used, the total system cpu usage is tested

Und einZyklusDies entspricht der Anzahl der Sekunden in den set daemonKonfigurationsoptionen.

verwandte Informationen