Tomcatの設定
提供: Astarisk Works Wiki
目次 |
Tomcatのパラメータ設定とは
Apache TomcatはJavaのServletエンジンで広く利用されている。
インストールは比較的簡単で、運用も容易であるが、商用サービスで多数のユーザを相手にする場合にはそのままでは力不足の時がある。
Tomcatには稼動状態を調整するための設定を施すことが可能である。それについて説明する。
ヒープメモリ、JVMモードの設定
JVMの動作モードやヒープメモリなどJavaのVMに対する設定は環境変数CATARINA_OPTSにその値を設定する。 例えば
set CATALINA_OPTS='-server -Xmx256M -Xms128M -Xss128k'
のように設定する。
set CATALINA_OPTS='-server -Xmx256M -Xms128M -Xss128k' …Windows export CATALINA_OPTS='-server -Xmx256M -Xms128M -Xss128k' …Linux系
のように設定する。 それぞれの意味は次の通りです。
- -server
- JVMをサーバーモードで動かす。(Tomcatの様なサーバーアプリケーションでは指定する)
- -Xmx256M
- ープメモリの最大値を256MBにする
- -Xms128M
- ヒープメモリの最小値を128MBにする(通常Xmxの半分くらいを指定する)
- -Xss128k
- スレッドスタックの使用メモリ。(デフォルト256kだけど大きすぎるので減らす)
最大接続数等の設定
この設定にはCATALINA_HOME/conf/server.xmlを編集する必要があります。 (未完)
GETパラメータでもsetCharacterEncodingメソッドを適用する方法
Tomcat5.x以降ではGETパラメータに対してsetCharacterEncodingメソッドは使われません。POSTメソッドでリクエストされるパラメータについてのみ適用されるよう仕様変更されいる。これはCATALINA_HOME/conf/server.xmlのConnector要素にて、useBodyEncodingForURI属性を次の設定をすることでGETパラメータにもsetCharacterEncodingメソッドを適用することが可能になる。
<Connector URIEncoding="UTF-8" port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/>
上記のuseBodyEncodingForURI="true"というところが件の設定を入れている部分。
useBodyEncodingForURIを使う代わりに、URIEncodeingを使うと2バイトコードを含むURIでもきちんと処理できるようになる。ただし、URIEncodingで指定したキャラクターセットの文字でURIエンコードされていないといけない。
<Connector URIEncoding="UTF-8" port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"/>
また、JKコネクターを使うときは、JKの設定をしているConnector要素でも設定する必要がある。
[[参考@IT:Javaの文字化け対策FAQ(3)
JKコネクターのGETパラメータでもsetCharacterEncodingメソッドを適用する方法
Tomcat5.xではGETパラメータに対してsetCharacterEncodingメソッドは使われません。POSTメソッドでリクエストされるパラメータについてのみ適用されるよう仕様変更されています。これはCATALINA_HOME/conf/server.xmlのConnector要素にて、useBodyEncodingForURI属性を次の設定をすることでGETパラメータにもsetCharacterEncodingメソッドを適用することが可能になります。
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true"/>
上記のuseBodyEncodingForURI="true"というところが件の設定を入れている部分です。
注意 JKの設定をしているConnector要素は、APACHE_HOME/conf/httpd.conf にて定義されている workers.properties で定義されています。 JKのConnector要素を変更する際は workers.properties を確認し設定を変更して下さい。