[tomcat]tomcatがフリーズしたときの原因究明方法(完全自分用メモ)

tomcatがフリーズしたときの原因究明方法

tomcatのプロセスが生きてるのに、tomcatが反応しないときのフリーズ原因究明方法は、tomcatのプロセス(java)に対してSIGQUITシグナルを送信してJavaスレッドダンプを出力させて、それを見て無限ループもしくはデットロックしている場所を見つける。

Javaスレッドダンプはtomcatからみて標準出力、つまりcatalina.outに出力される。
Javaスレッドダンプには、出力時点で実行中のスレッドの情報(実行状態およびソース上の実行箇所)、Javaのデットロックの情報が出力されている。

# pid=$( ps auwwwwx | egrep “^tomcat.+java ” | grep -v grep | awk ‘{print $2}’ )
# kill -3 ${pid}
# less /usr/local/tomcat/logs/catalina.out