Spring Boot如何配置內(nèi)置Tomcat的maxPostSize值
Spring Boot配置內(nèi)置Tomcat的maxPostSize值
Background
前端頁面表單輸入數(shù)據(jù)較多,包含多個(gè)文本、多張圖片,在數(shù)據(jù)未壓縮的情況下,最終上傳失敗。
Problem 1
后端報(bào)錯(cuò):
java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector
即:請(qǐng)求數(shù)據(jù)量過大,超出了最大閾值。
Solution
:
修改Spring Boot內(nèi)置Tomcat的maxPostsize值,在application.yml配置文件中添加以下內(nèi)容:
server: tomcat: max-http-post-size: -1
Note: 以下配置并不能解決Tomcat請(qǐng)求數(shù)據(jù)量的限制問題
spring: servlet: multipart: max-file-size: 30Mb max-request-size: 100Mb
Problem 2
解決了應(yīng)用服務(wù)器請(qǐng)求數(shù)據(jù)量過大問題后,在下一步寫入DB時(shí)又遇到了類似問題,超出了數(shù)據(jù)庫中最大允許數(shù)據(jù)包默認(rèn)配置值。
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 的 默認(rèn)配置:16777216 = 16 * 1024 * 1024,即16M
Tomcat設(shè)置maxPostSize導(dǎo)致Post請(qǐng)求不過去
問題
最近部署項(xiàng)目,用到的Tomcat 版本:7.0.82.0,發(fā)現(xiàn)一直登陸不了,查詢發(fā)現(xiàn)原來前端的數(shù)據(jù)傳遞不到后端
排查問題
通過debug日志發(fā)現(xiàn),后端沒有接受到前端用戶的登陸數(shù)據(jù),檢查發(fā)現(xiàn)Tomcat在server.xml中加入了,maxPostSize=0這個(gè)參數(shù),先刪除這個(gè)參數(shù)發(fā)現(xiàn)數(shù)據(jù)過去了
分析
查詢了表示maxPostSize=0表示post請(qǐng)求不限制大小的,google了半天才發(fā)現(xiàn),原來從 apache-tomcat-7.0.63 開始,參數(shù) maxPostSize 的含義就變了: 如果將值設(shè)置為 0,表示 POST 最大值為 0,不限制 POST 大小需要將值設(shè)置為 -1。
在此版本之前設(shè)置為 0 表示不限制 POST 大小。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java?SE判斷兩個(gè)文件內(nèi)容是否相同的多種方法代碼
昨天因?yàn)橐獛蛶熜值拿λ钥戳艘幌氯绾闻袛鄡蓚€(gè)文件內(nèi)容是否相同,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Java?SE判斷兩個(gè)文件內(nèi)容是否相同的多種方法,需要的朋友可以參考下2023-11-11SpringBoot實(shí)現(xiàn)登錄校驗(yàn)(JWT令牌)
JWT全稱為JSON Web Token,是一種用于身份驗(yàn)證的開放標(biāo)準(zhǔn),本文主要介紹了SpringBoot實(shí)現(xiàn)登錄校驗(yàn)(JWT令牌),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12Java如何優(yōu)雅地關(guān)閉資源try-with-resource及其異常抑制
這篇文章主要介紹了Java如何優(yōu)雅地關(guān)閉資源try-with-resource及其異常抑制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02從內(nèi)存模型中了解Java final的全部細(xì)節(jié)
關(guān)于final關(guān)鍵字,它也是我們一個(gè)經(jīng)常用的關(guān)鍵字,可以修飾在類上、或者修飾在變量、方法上,以此看來定義它的一些不可變性!像我們經(jīng)常使用的String類中,它便是final來修飾的類,并且它的字符數(shù)組也是被final所修飾的。但是一些final的一些細(xì)節(jié)你真的了解過嗎2022-03-03