• 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:从前端减少请求的参数,这个需要分析,最终我们也是采用了这个方案

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

  • 相关阅读:
    Python3 tkinter基础 Radiobutton variable 默认选中的按钮
    oracle函数NVL,NVL2和NULLIF之间的区别和使用
    js如何返回两个数的商的整数和余数部分?
    解决win10打开组策略弹出管理模板对话框问题
    asp.net mvc中动作方法的重定向
    asp.net mvc如何获取url的相关信息
    vs2015如何使用附加进程调试发布在IIS上项目
    未能加载文件或程序集“Oracle.DataAccess”或它的某一个 依赖项。如何解决?
    C#中使用SqlBulkCopy的批量插入和OracleBulkCopy的批量插入
    oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等
  • 原文地址:https://www.cnblogs.com/godtrue/p/7290610.html
Copyright © 2020-2023  润新知