モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

Tomcatが「Parameter count exceeded allowed maximum: 512」と言って止まる

Tomcatがこう言って止まってしまうという問題が起きました。


これぐぐると基本的にはJavaのパラメータ数最大値に引っかかってしまった場合にでるようで「org.apache.tomcat.util.http.Parameters.MAX_COUNT」や「maxParameterCount」と言ったパラメータ設定がされていると制限が掛かるようなのです。
ただ、設定する場所として書かれているのが「standalone.xml」(JBossの場合)だったり、「catalina.properties」(Tomcatの場合)だったり、「server.xml」(maxParameterCountでの指定の場合)だったりするのですが、自分の環境の場合、これではうまくいきませんでした。


CentOS6にTomcat6が入っているという環境なのですが、RHEL6(CentOS6)ではセキュリティアップデートによりデフォルトのパラメータ数が512になったのだそうです。


[CentOS6] tomcat6パッケージセキュリティアップデート - Hogex spotted
http://www.nanajo.com/blog/hogex/?p=333


というわけでCentOS6のTomcat6でこの「Parameter count exceeded allowed maximum: 512」というエラーが発生する場合、
/etc/tomcat6/tomcat6.conf
に下記設定を追加することで、パラメータの最大数を設定(この場合は4倍の4096個まで)に設定出来ます。

JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.http.Parameters.MAX_COUNT=4096" 


自分の試した限りではcatalina.propertiesやserver.xmlへの設定ではうまく反映されず、上記のようにtomcat6.confによるjava起動時のオプション指定でのみ変更可能でした。


(参考)

Tomcat http connector configuration: maxParameterCount
http://www.websina.com/bugzero/faq/exception-tomcat-maxParameterCount.html

[CentOS6] tomcat6パッケージセキュリティアップデート - Hogex spotted
http://www.nanajo.com/blog/hogex/?p=333

I get an error: java.lang.IllegalStateException: Parameter count exceeded allowed maximum: 512
http://www.visionproject.se/ShowKB.do?id=4377&supportCenter=8USa0ec8CyGSgfbfPTSV

Parameter count exceeded allowed maximum-Oboe吹きプログラマの黙示録
http://blog.zaq.ne.jp/oboe2uran/article/983/