Welcher Thread setzt meinen Server unter Last?
Hallo zusammen,
wenn eine Java-Webanwendung Probleme bereitet und die Auslastung des Servers auf 100% schnellt, ist es meist recht schwer herauszufinden, wer denn nun eigentlich der Übeltäter ist. Dabei ist eine genaue Analyse leichter als gedacht. Kurz zusammengefasst:
- Mithilfe von top die PID des Java-Prozesses ermitteln.
- In top Shift-H drücken. Dadurch werden, statt Prozessen, die einzelnen Threads angezeigt.
- Die ID des Java-Threads mit der hohen Auslastung heraussuchen und notieren.
- Einen Threaddump der Anwendung ziehen, z.B. mit jstack <PID>
- Die ID des Java-Threads in Hex umwandeln.
- Diese Hex-ID könnt ihr nun im Threaddump suchen und so ermitteln, welcher Thread der Übeltäter ist.