Ich habe einen Server, der eine sehr hohe Auslastung hat. Was die CPU-Auslastung angeht, geht mir nichts aus dem Kopf und es wird nicht getauscht.
Ich denke, es liegt daran, dass einige Prozesse auf das Festplatten-E / A warten, und ich möchte sehen, was darauf wartet.
Gibt es ein Programm, das mir zeigt, welche Prozesse auf IO warten? Ich weiß über, iotop
aber das zeigt, was derzeit IO tut.
Oder ist das eine dumme Frage? (Wenn ja wie erklären :))
iowait
Informationen liefert ,iotop
sind erhöhte Berechtigungen erforderlich.watch
,ps
Undawk
gibt nur die erforderlichen Informationen, und erfordert keine erhöhten Privilegien.ps
POSIX - Flags verwendet undawk
anders herausgeschnitten:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- Auf diese Weise erhalten Sie die Spaltenüberschriften und den Befehl stat, pid und.ps axu
und suchen Sie nach Prozessen, die sich im "D" -Zustand befinden. Basierend auf der Manpage ps (1) befinden sich Prozesse im Status D im unterbrechungsfreien Ruhezustand, was fast immer bedeutet, dass auf E / A gewartet wird. Leider ist es in der Regel nicht möglich, diese Prozesse zu beenden.quelle
Zancheys Antwort ist die beste, die ich kenne, um herauszufinden, was auf IO wartet.
Was meinen Sie damit, wenn Sie sagen, Ihr Server ist unter hoher Last? Etwas spezielles reagiert langsam?
Wenn Sie sich fragen, ob Ihre Datenträger-E / A der Engpass ist, würde ich den Befehl iostat (Teil des sysstat-Pakets) verwenden, um festzustellen, ob der Datenträger tatsächlich stark ausgelastet ist.
Beispiel:
quelle
Aktivieren block_dump Protokollierung , welche Prozesse tun Block Lese- / Schreiboperationen:
Wenn Sie fertig sind, deaktivieren Sie die Ablaufverfolgung, damit Sie Ihre Protokolldateien nicht als Spam versenden:
quelle