- PR -

Starting background thread の果てに

1
投稿者投稿内容
あおき
会議室デビュー日: 2004/03/13
投稿数: 1
投稿日時: 2004-03-13 23:14
W2KSP3で、IIS5.0(ispi_redirector.dll)、Tomcat4.0.3+JDK1.3.1_02、
Oracle9iR1 のサイト構築で初めて Java を使いました、あおきと申します。

稼働開始から1年半、ある日突然、VM が No processor available に
なるようになってしまって困っています。


現象発生までの経緯は、catalina_log の中に

Ajp13Processor[8080][0] Starting background thread
Ajp13Processor[8080][1] Starting background thread

と記録されていき、時間とともに [0]、[1]・・・・[99] と出現します。

Ajp13Processor[8080][99] Starting background thread

と [99]が記録された時点で、同じく catalina_log に

Ajp13Connector[8080] No processor available, rejecting this connection

と記録され、以降すべてのアクセスが http-status=500 になってしまいます。


server.xml の中では

<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8080" minProcessors="5" maxProcessors="100"
acceptCount="10" debug="0"/>

と maxProcessors を 100 にしていますので、Tomcat 起動後から
Starting background thread の 100個目が記録されると
No processor available になるんだろうとは思うのですが。


Log4j が吐き出しているログと見比べてみると、[nn]の部分が
その日初めて現れる番号の前に、Starting background thread で
その番号が出てきています。

それ以降もその [nn] は何度か出現するものの、GC 発生以降は
出てこない [nn] もあります。

つまり、今の時点では、なんらかの理由により GC 発生時に
100個設定していた processor のうち、いくつかが使えなくなり、
次々に processor が起動(?)するうちについに maxProcessor に
到達し、No processor available になるのでは、と思っています。

んなバカなと思っていろいろ調べてみましたが、GC と Processor の
関係に関してはこれと思われるものを見つけられませんでした。


コードやコンテンツやデータを変えたということもなく、またアクセスが
急激に増えたということもありません。

気になるのは set-cookie で jsessionid に含まれる「Path=/」などの
文字列を除くコードを入れていなかったので、最近 cookie名が reserved
ですよ、というエラーを拾うことが、以前よりは多くなったことでしょうか。


どなたかお知恵拝借願えませんでしょうか?
よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-14 01:59
通常スレッドを100コも使い果たすことはありませんので、どこかでスタックすているものと思われます。
スレッドダンプを取得して何が起きているか確認してみましょう。
1

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