Beitragsdatum | 06.12.2018 |
---|---|
Letzte Aktualisierung | - |
Betrifft | logrotate |
Ein Kunde meldete sich bei mir und berichtete, dass sein Server (Ubuntu 14.04 LTS) nicht mehr richtig laufen würde.
Ich meldete mich über ssh an und prüfte die Systemdaten (top
, free
usw.).
Schnell stellte ich fest, dass ein logrotate-Prozess seit langer Zeit den CPU zu fast 100% auslastete.
Ich prüfte die Funktion von logrotate mittel des Debug-Schalters:
logrotate -d /etc/logrotate.conf
Hier zeigte sich, dass logrotate sofort bei einer bestimmten Konfigfile hängen blieb.
Ich prüfte die Konfigfile und stellte fest, dass das Muster der zu rotierenden Logfiles falsch angegeben war. Es handelte sich dabei um eine vom Kunden angelegte Konfig für die Rotation der Logfiles der virtuellen Hosts für Apache.
# falsches Muster der zu rotierenden Logfiles: /var/www/vhosts/system/logs/*/*log* # Dieses Muster schließt nämlich die bereits rotierten Logfiles mit ein. # richtig: /var/www/vhosts/system/logs/*/*log /var/www/vhosts/system/logs/*/*log.webstat /var/www/vhosts/system/logs/*/*log.processed {
Dadurch entstanden im Laufe der Zeit zahlreiche rotierte Logfiles von rotierten Logfiles - rekursiv also. Das kostete nicht nur Unmengen an inodes, sondern zusätzlich Leistung und Speicher.
Beim Aufräumen nicht die logrotate-Status-Datei vergessen - siehe unten.
/var/lib/logrotate/status
) und löschte sie danach. Diese hatte eine beachtliche Größe von 273MB und über 1,8 Millionen Zeilen Länge erreicht Jede Logfile wird dort mit Datum der letzten Rotation aufgeführt. Bei dieser Größe erzeugt das Lesen der Datei bereits 100% CPU-Last für lange Zeit…logrotate -d /etc/logrotate.conf
) und ein echter Lauf ergaben: alles läuftQuellen:
Ähnliche Themen im blog:
logrotate, cpu, prozess