Ich laufe du -sh
in einer Vielzahl von Verzeichnissen, um Disk Hogs zu finden. Ich habe zwei identische Server (Dell PE2850s), beide mit RHEL5, und es wird erheblich länger dauern, bis sie du
auf einem Server über dem anderen ausgeführt werden.
du -sh /opt/foobar
Auf Server A (mit ca. 25 GB) dauert dies beispielsweise 5 Minuten, und auf Server B meldet sich derselbe Befehl mit der gleichen Datenmenge fast augenblicklich an mich. Ich sehe nichts Auffälliges, wenn ich oben renne usw.
Jeder Rat wird sehr geschätzt.
du -s
hängt nicht von der Größe der Daten ab, sondern von der Anzahl der Dateien. Haben beide Verzeichnisbäume eine ähnliche Anzahl von Dateien?du
viel schneller, wenn alle Verzeichnis-Metadaten (z. B. Dateigrößen) derzeit zwischengespeichert werden. Wenn dies aus irgendeinem Grund auf einem Server und nicht auf dem anderen der Fall ist, führt dies zu großen Unterschieden.Antworten:
Wenn sich in diesem Verzeichnis eine große Anzahl von Dateien befindet und sich der Inhalt des Verzeichnisses ständig ändert, wird der Verzeichniseintrag selbst im Laufe der Zeit fragmentiert. Wenn das Betriebssystem dann den Verzeichnisinhalt liest, gibt es viele, viele unnötige Festplattensuchen. Dies geschieht insbesondere bei ext * -Dateisystemen (ext4 könnte jedoch besser sein) und den alten ReiserFS v3.x-Dateisystemen (wenn diese zu 85% voll sind oder so).
Die Lösung ist ganz einfach:
Wenn alles im RAM zwischengespeichert ist, spielt dies natürlich keine Rolle. Normalerweise speichert Linux häufig aufgerufene Dateien und Verzeichnisse ziemlich aggressiv zwischen. Wenn Sie den Inhalt dieser Verzeichnisse wirklich im RAM behalten möchten, können Sie
ls -lah /your/dir 2>&1 >/dev/null
Ihrem Cron so etwas wie etwas hinzufügen.EDIT: Oh, eine Sache kam mir in den Sinn. Wenn Ihr Server über einen batteriegepufferten RAID-Controller mit einem Cache verfügt, überprüfen Sie, ob der Akku in Ordnung ist. Ich habe Situationen gesehen, in denen der Akku leer ist und der Controller den Cache vollständig deaktiviert, was die Leistung sehr beeinträchtigt. Beispielsweise können HP Server in den iLO-Protokollen etwas über den Controller-Akku sagen. Im eigentlichen Server Health Dashboard scheint alles in Ordnung und grün zu sein, aber nur der Protokolleintrag informiert Sie darüber.
quelle
umount
das Laufwerk undfsck
es?ionice -c3 -p $(pidof cp)
oder so.Ich schlage vor, den einfachen Befehl du ohne Schalter auszuprobieren. Sie werden schließlich sehen, welches Verzeichnis den Prozess verlangsamt. Könnte eine fehlerhafte Festplatte sein oder ein anderer Grund, ...
quelle