[PR]

[PR]


はじめに

 最近、CPUのチップ内に処理ユニット(コア)を複数搭載したタイプも普及してきました。これにより、コア数の数以内であれば、複数のプロセスをスピードを落とす事なく処理する事が可能になりました。  一方、Tomcatでは、mod_jkと連動させて複数のサーバーにプロセスを分散する事は以前から可能でした。ここでは、1つのサーバーで複数のTomcatプロセスを立ち上げる事により、マルチコアのCPUの能力を十分に発揮させる方法について説明します。

本ページの内容について

本ページでは、設定する際に落とし穴になりそうな点、他のHPでの解説で勘違いした点を中心にまとめます。具体的な設定方法は参照先のページを確認してください。

環境

以下のような環境での適用例です。Linux環境でも同様の設定による動作すると思います。

以下の記述は、上記環境が整っている状態で、tomcatプロセスを2個走らせる手順です。 特に、httpd.confの最後に以下の1行が追記されているか確認してください。

LoadModule jk2_module modules/mod_jk2.so

設定の手順

  1. server.xmlの編集
  2. workers2.propertyの編集
  3. web.xmlの編集
  4. 2つのプロセスでtomcatを起動

server.xmlの編集

apache2とtomcatを連携させる構成では、tomcatの待ち受けポートは8009なので、 必要な<Connector>要素は以下の部分だけです。

   <!-- Define an AJP 1.3 Connector on port 8009 -->
   <Connector port="8009" 
              enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

これ以外のポートは関係ないので、不要なら削除するか、コメントアウトしておきます。

server.xmlの編集その2

次に、クラスタリングを有効にするため、<Cluster>タグを有効にします。

       <!-- <=ここを削除
       <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
・・・・
       </Cluster>
       -->     <=ここを削除

server.xmlの編集その3

セッション管理を有効にするため、EngineタグにjvmRouteを追記します。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

jvmRouteに設定した名称はworkers2.propertyに使います。

server.xmlの複製

2つ目のプロセス用のserver.xmlとして、server2.xmlを作成します。 まずは、server.xmlのファイルをコピーし、名前をserver2.xmlとします。

server2.xmlの編集

2つのプロセスで同じ設定だと動かない項目のみ、server2.xmlで編集します。

workers2.propertyの編集

workers2.propertyを開き以下のように追記します。

[channel.socket:localhost:8009]
tomcatId=jvm1  <=これを追記
[channel.socket:localhost:18009] <=これを追記
tomcatId=jvm2  <=これを追記

web.xmlの編集

公開するサーブレットのWEB-INF内のweb.xmlを開きます。 最終行から2行目に、distributableを追記します。

 <distributable/>  <=これを追記
</web-app>

2つのTomcatプロセスの起動

コマンドプロンプトから、tomcat起動コマンドをたたきます。 このとき、2つめの起動オプションは、-config conf¥server2.xmlとします。

startup.bat <=1つめのプロセスを起動
startup.bat -config conf¥server2.xml <=2つめのプロセスを起動

参考

  1. Tomcat5めも
  2. @IT
  3. http://tomcat.apache.org/

コメント欄



*1 Tomcat 6では2プロセスで動作する設定が存在するようです
*2 mod_jk2はすでに開発がストップされ、mod_jkにマージされたようです。本構成は特殊と言えるかもしれません。mod_jkを使ったApacheとTomcatの連携は別にまとめたいと思います。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS