- - PR -
apache2.2とtomcatの連携でのスレッド管理について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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/*] |
|
投稿日時: 2008-04-17 11:22
時間が空いてしまいましたが自己レスしておきます。
どうやらtomcat4.1系はajpでの接続を推奨しておらず、 ajp接続をするならtomcat5.5系を使えというスタンスのようです。 試しにtomcat5.5系を入れて負荷をかけてみたところ問題は起こりませんでした。 |
1