- PR -

apache2.2とtomcatの連携でのスレッド管理について

1
投稿者投稿内容
Zep
会議室デビュー日: 2008/01/09
投稿数: 4
投稿日時: 2008-04-03 11:32
apache2.2.8をmod_proxy/mod_proxy_ajpによってtomcat4.1.36と連携させています。
apache(worker_module)のMaxClients、tomcatのConnecterタグのmaxProcessors共に75に設定しています。
tomcatにはコンテキストAとBがあり、それぞれに70ユーザ同時アクセスをかけました。
すると始めのAの方は正常終了するのですが、続くBでは5ユーザ処理をしたところで以下のログを吐いて止まってしまいます。
org.apache.tomcat.util.threads.ThreadPool logFull 致命的: すべてのスレッド (75) が現在稼働中で待機しています。maxThreads (75) を増やすか、そのサーブレットのステータスをチェックしてください
B→Aの順番でも同様です。

原因を探るためにとりあえずapacheとtomcatを以前のバージョンに戻しました。
apache2.0.58 + mod_jk2 + tomcat4.1.31
worker_module, Connecterタグの設定は同様です。
この状態で先程と同じく70ユーザ同時アクセスをA、Bと何度行っても正常終了します。

apacheとtomcatの組合せを替えて試してみましたが、apache2.0.58ではどちらのバージョンのtomcatと組み合わせても問題なく、apache2.2.8ではエラーになります。
なのでmod_proxy/mod_proxy_ajpでの連携部分に何か問題があると思うのですが…
この現象について心当たりがありましたら教えてください。


新旧共通の部分

apache - ~/conf/httpd.conf / ~/conf/extra/httpd-mpm.conf
<IfModule worker.c> / <IfModule mpm_worker_module>
StartServers 2
MaxClients 75
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

tomcat - ~/conf/server.xml
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8010" minProcessors="5" maxProcessors="75"
enableLookups="false" redirectPort="8443"
acceptCount="30" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>


新旧異なる部分

apache2.2.8 - ~/conf/httpd.conf
e.g)
<Location /A/>
ProxyPass ajp://localhost:8010/A/
</Location>
<Location /B/>
ProxyPass ajp://localhost:8010/B/
</Location>

apache2.0.58 - ~/conf/workers2.properties
e.g)
[uri:/A/*]
[uri:/B/*]
Zep
会議室デビュー日: 2008/01/09
投稿数: 4
投稿日時: 2008-04-17 11:22
時間が空いてしまいましたが自己レスしておきます。

どうやらtomcat4.1系はajpでの接続を推奨しておらず、
ajp接続をするならtomcat5.5系を使えというスタンスのようです。
試しにtomcat5.5系を入れて負荷をかけてみたところ問題は起こりませんでした。
1

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