Veraltete Session-Dateien von Magento automatisch löschen

Im Verzeichnis var/session produziert Magento unmengen von Dateien, die nie gelöscht werden. Nicht nur beim Einloggen, sondern bei jedem neuen Besuch des Online-Shops wird eine neue Session-Datei in diesem Verzeichnis angelegt.

Eine Session-Datei kann von 2 bis 200 kb groß sein. Nicht selten erreicht der Speicherverbrauch in diesem Verzeichnis Douzente und sogar Hunderte von Gigabytes. Deshalb sollten veraltete Session-Dateien automatisch gelöscht werden.

Automatische Löschung

Die folgende Anweisung löscht alle Session-Dateien älter als 90 Tage:

find var/session/ -mtime +90 -exec rm {} \;

Die Anweisung sollte als Cron-Job hinterlegt werden, um die Session-Dateien täglich zu löschen.

Erstmalige Bereinigung

Beim erstmaligen Bereinigen des Session-Verzeichnisses kann es einige Zeit dauern, bis die Ausführung abgeschlossen ist. Um eine realistische Erwartung an die Ausführungszeit zu haben, lohnt es sich deshalb den Speicherverbrauch vorher abzufragen:

du -h var/session

Damit die Konsole nicht blockiert wird, kann die Anweisung mit dem &-Operator am Ende der Zeile in ein Prozess ausgelagert werden:

find var/session/ -mtime +90 -exec rm {} \; &

Es wird eine Prozessnummer angezeigt. Die Ausführung der Anweisung kann über den Prozess-Manager htop nachvollzogen werden.

Fehlerbehebung

Verwendet man in der Anweisung oben var/session/* (mit Strernchen) statt var/session/ (ohne Sternchen) könnte beim erstmaligen Ausführen die folgende Fehlermeldung kommen:

Argument list too long

Das hängt damit zusammen, dass durch das Sternchen die gesamte Dateiliste als Parameter übergeben wird und die in ARG_MAX festgelegte Grenze überschritten wird. Man kann sich diese Zahl wie folgt anzeigen lassen:

getconf ARG_MAX

Die Lösung für das Problem ist das Entfernen von Sternchen, also var/session/ statt var/session/* zu verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.