1. 程式人生 > >More than the maximum number of request parameters

More than the maximum number of request parameters

必須 導致 png deb .cn 好的 attr sina ram

前些時間,我們的的一個管理系統出現了點問題,原本運行的好好的功能,業務方突然講不行了,那個應用已經運行了好多年了,並且對應的代碼最近誰也沒改動過,好奇怪的問題,為了解決此問題,我們查看了日誌,發現請求的參數壓根沒有傳到後臺控制器之中,奇怪了!明明前端傳遞了好多參數過來了呀!線上系統比較重要,又需要馬上使用必須趕緊解決呀!

提交請求時的頁面反應,如下所示:

技術分享

於是我們想在本地模擬同樣的操作,可氣的是本地壓根沒任何問題,好頭疼,對於這樣的問題確實是最令人頭疼的,同樣的代碼一邊運行不了,一邊屁事沒有,後來又重新的詢問用戶是怎麽操作的,我們載嚴格的操作一遍,可是在本地還是沒有任何問題,後來想到,我們的操作行為是一樣的,但是數據卻是不一樣的,同時我們也註意到,同樣的功能,除了某些數據,其他的數據也能能夠操作成功,好吧!估計和數據量有關系!於是就在本地大量的造數據再次的模仿,後來造了近萬條的數據在本地終於也能出現一樣的問題了,確實和提交的數據量有關系,且首次調用的時候會出現如下的錯誤提示信息:

六月 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