Wie kann ich feststellen, was für ein Linux-Prozess für wartet?
-
03-07-2019 - |
Frage
Ich versuche, die Ursache von Performance-Engpässe in einer Anwendung auf die Spur ich unter Linux bin debuggen. Die verschiedenen beteiligten Prozesse scheinen viel ihrer Zeit blockiert auf der I / O-Anfragen zu verbringen, und ich frage mich, ob jemand irgendwelche Linux Tricks wusste, dass können Sie sehen, Warum ein bestimmter Prozess blockiert / welche Ressourcen es ist warten auf? Gibt es irgendetwas nützlich in /proc
zum Beispiel?
Lösung
Wie auch immer zu verarbeiten ist, verwenden Sie top
den Zustand zu überprüfen. Dann könnte man es durch Truss oder strace laufen. Das soll im Einzelnen, was los ist. Wenn das nicht möglich ist, Haken es bis zu gdb . Tools wie iostat könnten Sie im Allgemeinen zeigen, was los ist (zB wenn Platte ist Engpass) .
Andere Tipps
Sie könnten den strace
Befehl verwenden, um zu sehen, was Ihr Prozess bis zu ist. Vielleicht finden Sie es auch nützlich lsof
auf Ihrem Prozess ausgeführt, um zu sehen, welche Dateien und Steckdosen es verwendet.
strace ist dein Freund, weil Sie die Zeit in jedem Systemaufruf ausgegeben bekommen, plus können Sie die Datei-Deskriptoren wählen und System rufen Sie interessiert sind Sie können aber auch Unterstützung aus dem Kernel bekommen. Haben einen Blick auf < a href = "http://www.latencytop.org/" rel = "noreferrer"> latencytop