- PR -

Tomcatのスレッドが開放されません

1
投稿者投稿内容
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2007-07-05 14:01
こんにちは。質問させていただきます。よろしくお願いします。

Strutsで開発したアンケートコンテンツをTomcatで運用しているのですが、
Tomcatのスレッドが開放されず、最終的にスレッドがMAXまで到達し、リクエストを受け付けない状態になってしまいます。
その時のログは以下のとおりです。※すぐに落ちないようにmaxThreadsを500に設定しています。

2007/06/30 14:46:46 org.apache.tomcat.util.threads.ThreadPool logFull
致命的: すべてのスレッド (500) が現在稼働中で待機しています。maxThreads (500) を増やすか、そのサーブレットのステータスをチェックしてください

スレッドダンプを確認すると以下のようなスレッドが大量に発生していました。

"TP-Processor168" daemon prio=1 tid=0x442ac9a8 nid=0x1a27 runnable [0xa51ff000..0xa51ff650]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
- locked <0x0a302328> (a java.io.BufferedInputStream)
at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:607)
at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:545)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:672)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)


色々と試してみたのですが、どうしてもスレッドが開放されません。
何かお心当たりのある方がいらっしゃいましたら、教えていただけないでしょうか。


【アンケートコンテンツの内容】
・質問情報の入ったXMLを読み込んで画面を表示し、回答をCSVで保存する。DBは利用していない。
・XML読み込み、CSV出力共にActionクラスから固有のクラスをnewしてメソッドを実行。
・XML読み込み、CSV出力を行うメソッドにはsynchronized修飾子を付けている。
・XML読み込み、CSV出力時に使用したInputStream, OutputStream, writer 等は全てfinally句でclose及び、nullをセット。
※当初CSV出力時排他ロックを掛けているのが原因かと思いましたが、排他ロックを掛けない状態でもスレッドが開放されませんでした

【環境】
OS:RHEL4
Tomcat5.5.17
JDK1.5
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-07-05 14:17
ソケットのストリームから読み込んでいる箇所で止まっているようですね。
Apache <-> Tomcat 間のネットワークに何か問題が起きていないでしょうか?
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2007-07-05 16:24
インギさん、ご返答ありがとうございました。

>Apache <-> Tomcat 間のネットワークに何か問題が起きていないでしょうか?
ご指摘を受けさっそくmod_jk.logを確認したところ、以下のようなエラーメッセージが大量に出力されていました。

[土 6月 30 14:29:45 2007] [12887:16406] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): Can't receive the response message from tomcat, network problems or tomcat is down (172.15.38.156:8009), err=-104
[土 6月 30 14:29:45 2007] [12887:16406] [error] ajp_get_reply::jk_ajp_common.c (1531): Tomcat is down or refused connection. No response has been sent to the client (yet)

これは、mod_jkとTomcat間の連携がうまくいっていない、ということでしょうか?
現在原因を分析中ですが、とりいそぎご連絡させていただきます。

[ メッセージ編集済み 編集者: どらねこ 編集日時 2007-07-05 16:27 ]
eisk
会議室デビュー日: 2004/03/09
投稿数: 4
投稿日時: 2007-08-22 18:09
私も同じ問題で悩んでいます。

原因は何でしょうか・・・?
ヤン
会議室デビュー日: 2008/03/24
投稿数: 3
投稿日時: 2008-03-24 18:32
私も同じ現象で悩んでます。

当方の環境は、以下のとおりです。

【環境】
OS:Red Hat Linux release 9
apache:2.0.59
tomcat:4.1.36
java:1.4.1-b21
mod_jk2:2.0.4

どなたか何か情報がございましたらご教授ください。
よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)