LoginSignup
1
1

More than 5 years have passed since last update.

CentOS6上のTomcatが1リクエストで受け取れるパラメータ数の上限

Last updated at Posted at 2015-05-19

が、あるらしいです。ぶつかりました。

症状

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1