Weblogic によってマークされたスタック スレッドを示すログがあります。
<Apr 23, 2013 7:48:25 AM CST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '276' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "668" seconds working on the request "weblogic.servlet.internal.ServletRequestImpl@23ba221b[
GET /XXX/saveInfo.do?fx=duration&info=25159,0,0,0,0,0,0,25153 HTTP/1.1
私の場合、スタックしたスレッドが多すぎると、サーバーの応答時間が遅くなり、より多くのメモリを消費することがわかりました。
スタック スレッドの数を自動レポート ロボットのヘルス インデックスにしたいと考えています。ログファイル以外にカウントする方法は?スタックしたスレッドをカウントするのに役立つコマンドまたは API はありますか?
@viccari からのソリューション ( wlstサンプル コード) をまとめました。
from tempfile import mktemp
connect('your_account', 'your_account_pass', 'localhost:7001')
# dump thread details to a temp file
file = mktemp()
threadDump(writeToFile="true", serverName="your_server_name", fileName=file)
# count the string token "[STUCK]" by line
count = 0
f = open(file, "r")
for line in f.readlines():
if line.find("STUCK") > 0:
count = count + 1
print "NUM_OF_STUCK_THREADS: ", count