Drücken viele Session Files auf die Performance?

Sonyo

New Member
Ausgangssituation: Debian 7, Softwareraid1 über 2 *2tb Platten.

Also ich habe circa hundert Webpräsenzen auf diesem Server und sie löschen ihre Session Datein im webxy/tmp/ Verzeichnis nicht eigenständig.

Nachdem der Server im Load stetig steigt und das weder an der Ram noch an der CPU Auslastung liegt (in der Auslastung steht es bei 75% auf Wait) tippe ich auf die Festplatten.
Dabei sind mir stellenweise hunderttausende bis 1 Millionen Session Files mit überwiegend 0 Bytes aufgefallen.

Ist es so das das auf die Performance drückt? Meine Überlegung geht dahin das PHP ja beim schreiben und lesen jedesmal auf das Verzeichnis zugreift und es deswegen so langsam ist. Oder bin ich da auf dem Holzweg?

Gibt es noch andere Ansätze?

Ich wäre für Tips sehr dankbar :P
 
Poste doch mal ein paar Sekunden der Ausgabe von "vmstat -1" und ein paar Screenshots von htop. Vor den Screenshots von htop aber bitte unter den Optionen (F2) die "detailed cpu info" anschalten und unter columns die "processor" column hinzufügen. Da sollte man dann ziemlich genau sehen welcher Thread auf welcher cpu shedulded war und was die cpu gemacht hat. Ich hatte mal den Fall dass viele Dateien in einem Ordner den Zugriff drauf extrem verlangsamt hat weil der Filesystem Treiber ständig in irgendeinem internen Btree rumgesucht hat. Das war aber Windows und NTFS.

Thomas
 
Wenn Ram verfügbar ist, könnte man sie in Memcached legen.

Wenn es zu viele werden, fallen die ältesten hinten aus dem Ram. Kann natürlich zu unschönen Nebeneffekten führen, so dass der Einsatz abgewogen werden sollte.
 
Ist es so das das auf die Performance drückt? Meine Überlegung geht dahin das PHP ja beim schreiben und lesen jedesmal auf das Verzeichnis zugreift und es deswegen so langsam ist. Oder bin ich da auf dem Holzweg?

Im Prinzip: ja. Um genau zu sein: es kommt etwas auf das Dateisystem an, wie performant das bei großen Verzeichnissen ist. Früher oder später leidet aber immer die Performance.

Bei Debian gibt's z.B. ein Script in /etc/cron.d/php5, welches die "session.gc_maxlifetime" ausliest und mit dem Wert dann via "find" alle alten Session-Dateien löscht - das betrifft aber nur /tmp/. Für individuelle tmp-Verzeichnisse kann man das aber als Vorlage nehmen und entsprechend anpassen.
(LiveConfig etwa macht das genau so. ;-))
 
Im Prinzip: ja. Um genau zu sein: es kommt etwas auf das Dateisystem an, wie performant das bei großen Verzeichnissen ist. Früher oder später leidet aber immer die Performance.

EXT4
Ich glaube gelesen zu haben das das unperformanter sein soll in Bezug auf kleine Dateien. Die Frage ist ob es wirklich soviel ausmacht.


Bei Debian gibt's z.B. ein Script in /etc/cron.d/php5, welches die "session.gc_maxlifetime" ausliest und mit dem Wert dann via "find" alle alten Session-Dateien löscht - das betrifft aber nur /tmp/. Für individuelle tmp-Verzeichnisse kann man das aber als Vorlage nehmen und entsprechend anpassen.
(LiveConfig etwa macht das genau so. ;-))

Dann versagt es bei mir an der Stelle ;)

Oder meinen sie wirklich nur das Haupt /tmp/? Das wiederum ist ja nicht sonderlich auffällig. Es betrifft nur die seperaten Webuser tmp Verzeichnisse.

Ich werde jetzt aber einen Cronjob anlegen das periodisch alle Sessions Files älter als X Tage löscht und das ganze mal beobachten.


@ThomasChr
Danke für den Tipp, leider sieht man da nichts auffälliges, die Scripte an sich laufen nicht so lange als das man das zweifelsfrei darauf festnageln kann.
Aber vielleicht macht es ja die Summe an Zugriffen wenn jedes nur ne Sekunde länger braucht sammelt sich da arg was zusammen.
 
Also letzten Endes waren es circa 10Mio Session Files in den verschiedenen Tmp Ordnern.

Und ja, es hat was gebracht, der Server hat jetzt wesentlich weniger Wait Zyklen und läuft demzufolge zackiger.
 
Back
Top