が、あるらしいです。ぶつかりました。
症状
CentOS6.5+Tomcat6で動いてるアプリが謎のエラーで落ちていました。
ログを調べるとこんなエラーが
catalina.out
java.lang.IllegalStateException: Parameter values exceeded allow maximum: 512
初めて見るエラーで、なんのこっちゃと思って調べてみたところ、どうやら現行のRedHat系OSに乗ってるTomcat6では
受け取れるパラーメータ数の上限が512に設定されているそうです。
何やらセキュリティ上の理由らしいですが、Javaはよく知らないので詳細は割愛。
対処法
そもそもそんなにパラメータを投げる実装をしなければいいんですが、既存のアプリはしょうがないのでTomcatの設定を変更します。
/etc/tomcat6/tomcat6.confに以下の1行を追記。パラメータ数の上限を2048個にしてみます。
/etc/tomcat6/tomcat6.conf
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.http.Parameters.MAX_COUNT=2048"
tomcatっていうか、javaのvmに渡すオプションなんですね。
続いてtomcatを再起動
sudo /etc/rc.d/init.d/tomcat6 stop
sudo /etc/rc.d/init.d/tomcat6 start
とりあえずこれでエラーが出なくなって一安心。
512個ってなかなか多いですけど、ページの作り方によっては超えちゃう可能性もある微妙な数字ですね。実際超えちゃったし。
今後はCentOS上に環境構築する時はこの設定も忘れないようにしないとですね。
CentOS7も同じなのかな?
参考にさせていただいたページ
http://stackoverflow.com/questions/12277231/maximum-number-of-parameter-passed-in-a-post
http://d.hatena.ne.jp/stealthinu/20140916/p1