您好,登錄后才能下訂單哦!
本篇內容介紹了“Spring Boot怎么配置內置Tomcat的maxPostSize值”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Spring Boot配置內置Tomcat的maxPostSize值
Background
Problem 1
Problem 2
Tomcat設置maxPostSize導致Post請求不過去
問題
排查問題
分析
前端頁面表單輸入數據較多,包含多個文本、多張圖片,在數據未壓縮的情況下,最終上傳失敗。
后端報錯:
java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector
即:請求數據量過大,超出了最大閾值。
Solution
:
修改Spring Boot內置Tomcat的maxPostsize值,在application.yml配置文件中添加以下內容:
server: tomcat: max-http-post-size: -1
Note: 以下配置并不能解決Tomcat請求數據量的限制問題
spring: servlet: multipart: max-file-size: 30Mb max-request-size: 100Mb
解決了應用服務器請求數據量過大問題后,在下一步寫入DB時又遇到了類似問題,超出了數據庫中最大允許數據包默認配置值。
Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16800061 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.
Solution
:
修改DB的max_allowed_packet值:
USE demo; set global max_allowed_packet = 3*1024*1024*10; # 改為30M show VARIABLES like '%max_allowed_packet%'; # 重啟DB連接生效
Note:MySQL中max_allowed_packet 的 默認配置:16777216 = 16 * 1024 * 1024,即16M
最近部署項目,用到的Tomcat 版本:7.0.82.0,發現一直登陸不了,查詢發現原來前端的數據傳遞不到后端
通過debug日志發現,后端沒有接受到前端用戶的登陸數據,檢查發現Tomcat在server.xml中加入了,maxPostSize=0這個參數,先刪除這個參數發現數據過去了
查詢了表示maxPostSize=0表示post請求不限制大小的,google了半天才發現,原來從 apache-tomcat-7.0.63 開始,參數 maxPostSize 的含義就變了: 如果將值設置為 0,表示 POST 最大值為 0,不限制 POST 大小需要將值設置為 -1。
在此版本之前設置為 0 表示不限制 POST 大小。
“Spring Boot怎么配置內置Tomcat的maxPostSize值”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。