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)

http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html]]

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 を確認し設定を変更して下さい。

個人用ツール