%20von%20Festplattenschreibvorg%C3%A4ngen%20in%20Linux%20(RHEL6.1)%20zu%20dokumentieren%3F.png)
Ich habe eine virtuelle Maschine mit einer PHP-basierten Anwendung (in Apache). Bei Betrachtung der Festplattenaktivität werden bei laufendem Apache konstant 170 kbps geschrieben.
Wenn wir eine Last anwenden, ist die Leistung des Servers CPU-belastet, aber das scheint direkt mit 20- bis 30-fachen Anstiegen der Schreib-E/A-Raten bei der Festplatte zusammenzuhängen. Das CPU-Auslastungsdiagramm spiegelt das Diagramm der Schreibzugriffe auf die Festplatte wider.
Irgendwelche Ideen?
Antwort1
Zwei Empfehlungen:
iotopist ein praktisches Programm, das Ihnen die E/A-Nutzung in Echtzeit in einem Format wie dem top
Befehl anzeigt. Dies sollte Ihnen dabei helfen, das Skript/Binärprogramm zu identifizieren, das die gesamte E/A ausführt. Ich denke, dies ist möglicherweise bereits auf neueren Kerneln installiert, aber yum stellt es möglicherweise auf RHEL bereit, wenn Sie es nicht sehen.
lsof
ist auch bei der E/A-Fehlerbehebung hilfreich; es listet alle geöffneten Dateien auf.
AKTUALISIEREN
Wenn eine „konstante“ Festplattenaktivität vorliegt, iotop
sollten Sie erfahren, welche Prozesse die Schuldigen sind. In Bezug auf den E/A-Transaktionsverlauf: Ich glaube nicht, dass der E/A-Verlauf in den meisten Linux-Distributionen irgendwo protokolliert wird, aber Sie können einen Cron-Job hinzufügen.
Öffnen Sie als Root die Crontab crontab -e
und fügen Sie diese beiden Zeilen hinzu:
* * * * * /bin/date >> /var/log/iotop; /usr/local/bin/iotop -bot --iter=3 -q >> /var/log/iotop
* * * * * /bin/date >> /var/log/lsof; /usr/bin/lsof -b -w >> /var/log/lsof
Dadurch wird jede Minute ein Speicherauszug erstellt iotop
und lsof
in ein Protokoll ausgegeben. Fügen Sie für jeden ein Logrotate-Skript hinzu, damit die Dateien nicht den gesamten Speicherplatz beanspruchen, z. B.:
someuser@myhost:~> cat /etc/logrotate.d/lsof
/var/log/lsof {
rotate 3
weekly
compress
missingok
notifempty
}
Antwort2
Es scheint, dass eine unabhängige Hintergrundaufgabe den Inhalt des Verzeichnisses /tmp löschte, in das PHP vorkompiliert wurde. Infolgedessen wurde der PHP-Vorkompilierungsprozess erneut gestartet, was zu ständiger Festplattenaktivität führte.