More than the maximum number of request parameters

Posted godtrue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了More than the maximum number of request parameters相关的知识,希望对你有一定的参考价值。

前些时间,我们的的一个管理系统出现了点问题,原本运行的好好的功能,业务方突然讲不行了,那个应用已经运行了好多年了,并且对应的代码最近谁也没改动过,好奇怪的问题,为了解决此问题,我们查看了日志,发现请求的参数压根没有传到后台控制器之中,奇怪了!明明前端传递了好多参数过来了呀!线上系统比较重要,又需要马上使用必须赶紧解决呀!

提交请求时的页面反应,如下所示:

于是我们想在本地模拟同样的操作,可气的是本地压根没任何问题,好头疼,对于这样的问题确实是最令人头疼的,同样的代码一边运行不了,一边屁事没有,后来又重新的询问用户是怎么操作的,我们载严格的操作一遍,可是在本地还是没有任何问题,后来想到,我们的操作行为是一样的,但是数据却是不一样的,同时我们也注意到,同样的功能,除了某些数据,其他的数据也能能够操作成功,好吧!估计和数据量有关系!于是就在本地大量的造数据再次的模仿,后来造了近万条的数据在本地终于也能出现一样的问题了,确实和提交的数据量有关系,且首次调用的时候会出现如下的错误提示信息:

六月 02, 2017 2:59:08 下午 org.apache.tomcat.util.http.Parameters processParameters
信息: More than the maximum number of request parameters (GET plus POST) for a single request ([10,000]) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
Note: further occurrences of this error will be logged at DEBUG level.

这个提示信息还算老实,比较明显就能暴露出对应的问题了——当请求的参数过多的时候,会忽落多余的参数,修正的方法也给出的了对应的提示,扩大对应的参数配置就行了!

从网上也找到了类似的问题解决方案,如下所示:

http://www.tuicool.com/articles/zqQzEnJ

http://blog.sina.com.cn/s/blog_69398ed90101gfly.html

我也在本地试验了一下,(我本地使用的tomcat版本是 7.0.61)

修改server.xml文件的相关配置

修改的主要内容如下所示:

每个参数对应的具体含义,请参看如下的文档:

https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

当然,后来这个修改方案,并没有被采用,因为我们的架构师不建议改动tomcat的默认配置,以防止以后升级或者随着数据量的增加再次的出现类似的问题。

问题的解决往往不难,关键是发现问题的所在比较费劲,就好像以前听过的一个给机器划线的工程师的故事一样,精准定位的问题的价值占到解决问题总价值的99%。

这个问题的关键是请求参数过多,那么思路至少有两个:

1:修改配置,就是让过多的请求参数顺利到达后端

2:从前端减少请求的参数,这个需要分析,最终我们也是采用了这个方案

以后可能还会遇到类似的问题,因为有些应用如果设计的不好玩的话,随着时间的推移,可能也存在请求的参数不断增长且往后端传递的情况,程序没变,运行环境看似也没有遍,但是数据量变了,这是一个潜在的问题导火索!

以上是关于More than the maximum number of request parameters的主要内容,如果未能解决你的问题,请参考以下文章

mongodb Sort operation used more than the maximum 33554432 bytes of RAM

OperationFailed Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or sp

RHadoop: REDUCE capability required is more than the supported max container capability in the clust

产值超1000万亿的行业Blockchain Ten Times More Valuable Than the Internet

CentOS 8 AppStream报错AppStream is listed more than once in the configuration

CentOS 8 AppStream报错AppStream is listed more than once in the configuration