「Tomcat」タグアーカイブ

TomcatのmaxParameterCountを設定する

Webアプリケーション自動生成ツールを使用して、JavaベースのWebアプリを開発をしていたときに直面した課題。ある日、以下のようなエラーログが出力された。

ざっくり和訳すると「リクエストパラメータの上限を超えました。超えた分のパラメータは無視されます。上限を変えるにはConnectorのmaxParameterCountを参照してください」とのこと。

catalina.outに出力されていたけど、特にTomcatとしてエラーになることなくこのログが出力されていた。しかし、パラメータが無視されたらまともに動かない。。。

これまでスクラッチで開発する場合は、パラメータの数は自分で把握できていたのですが、今回はある程度コーディングしなくてもいいWebアプリケーション自動生成ツールを使用したためにパラメータの数は自分で把握していませんでした。maxParamterCountのデフォルト値が10,000だったので、とりあえず20,000に変更したら解消しました。

また、これを機にmaxParamterCountに加えて、maxPostSizeも見直した方がよいことが分かりました。設定は、{Tomcatインストールディレクトリ}/conf/server.xml。それぞれの詳細は以下。

パラメータ 内容
maxParamterCount

The maximum number of parameter and value pairs (GET plus POST) which will be automatically parsed by the container. Parameter and value pairs beyond this limit will be ignored. A value of less than 0 means no limit. If not specified, a default of 10000 is used. Note that FailedRequestFilter filter can be used to reject requests that hit the limit.

→要約すると、「最大パラメータ数。超えた分は無視される。0以下をセットすると無制限。指定が無い場合はデフォルト値の10,000となる。」

maxPostSize

The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing. The limit can be disabled by setting this attribute to a value less than zero. If not specified, this attribute is set to 2097152 (2 megabytes). Note that the FailedRequestFilter can be used to reject requests that exceed this limit.

→要約すると、「POSTリクエストの最大サイズ(バイト)。0以下を設定すると無制限になる。指定されていない場合は、2MBとなる。」

公式サイト→http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

設定例