- - PR -
Tomcat の最大スレッド数 maxThreads について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-11 11:06
いつもお世話になっています
Tomcat の maxThreads について質問させて頂きます 現在下記のような構成で稼動しているシステムがあります RedHatLinux9 Apache 2.0.50 Tomcat 4.1.30 mod_jk2 2.0.4 このシステムにおいて、スレッド数が CATALINA_HOME/conf/server.xml 中の maxProcessors="75" の値になると Tomcat が org.apache.tomcat.util.threads.ThreadPool logFull 致命的: すべてのスレッド(75)が現在稼動中で待機しています。maxThreads(75)を増やすか、そのサーブレットのステータスをチェックしてください サービス Tomcat-Standalone を停止します というエラーをログに出力して停止してしまいます。 ここで、仮に maxThreads(maxProcessors) の値を増やしたところで、いたちごっこになるだけのような気がします。 根本的に解決する方法はないものでしょうか? よろしくお願いします。 |
|
投稿日時: 2004-11-11 12:06
稼働中で待機しているっていうのはたぶんどこかの処理でスタックしているのではないでしょうか?
スレッドダンプをとって無限ループやスタックしている箇所を洗い出しましょう。 |
|
投稿日時: 2004-11-11 16:51
インギさんありがとうございます。
スレッドの maxThreads を使い切った場合に Tomcat が落ちるというのは仕様なのでしょうか? すみません、Tomcat のスレッドダンプの見方というのも分かっていません。 どこかの処理でスタックしてしまった場合と、正常にスレッドを消費している違いを見分ける方法を教えて頂けますか? 宜しくお願い致します。 |
|
投稿日時: 2004-11-11 17:09
Tomcatの使用については存じませんがメッセージからすると設計通りにシャットダウンしているように見えますね。
スレッドダンプの取得方法をご存じないのでしょうか?それとも取得した上でどこを読めばよいのかわからないのでしょうか? スレッドダンプについてはまず "スレッドダンプ" でこの会議室なり google なりを検索してみてはいかがでしょうか? これとか http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14213&forum=12 これとか http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15395&forum=12 役に立つと思います。 少なくともスレッドダンプの取得方法と読み方についてはわかるのではないでしょうか。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-11-11 17:11 ] |
|
投稿日時: 2004-11-16 12:11
リンクの情報ありがとうございます。
スレッドダンプの取得方法について理解できました。 ただ、残念なことに問題発生時に即再起動を行ってしまったため、今回はスレッドダンプを取得することが出来ませんでした。 次回、障害が発生した際に活用させて頂きたいと思います。 ありがとうございました。 |
|
投稿日時: 2004-11-16 12:53
「現在稼動中で待機」ということなのでおそらくスレッドのスタックを検出(スレッドが処理を継続したまま戻ってこない)したのでしょう。最大値までスレッドを増やしてもスタックしているようでは新規リクエストをまったく裁けなくなってしまいますから、仕様としてはおかしくなさそうです。
次回発生時にスレッドダンプをとればどこで固まっているか一発でわかるでしょう。 どんなシステムでも運用時にはスレッドダンプを取得できるように仕掛けておく(標準、標準エラー出力をファイルにリダイレクトしておく)ことをオススメ致します。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-11-16 12:54 ] |
|
投稿日時: 2004-11-17 10:59
java tomcat に限らず、システム運用の指針として大変参考になりました。
ありがとうございました。 |
1