背景:項目使用的是微服務架構,采用springboot來開發,所有的服務都是基於內嵌tomcat來運行
問題:項目部署到測試環境之后,偶爾在后台日志會看到這樣的日志:Feign status 400 reading XXXX content:
調查后發現是get請求參數太長的緣故,將參數打印出來,發現最長的有12KB,而內嵌tomcat對參數的默認限制是8K,在tomcat的org.apache.coyote.http11.AbstractHttp11Protocol類中定義了其默認值,如下:
/** * Maximum size of the HTTP message header. */ private int maxHttpHeaderSize = 8 * 1024; public int getMaxHttpHeaderSize() { return maxHttpHeaderSize; } public void setMaxHttpHeaderSize(int valueI) { maxHttpHeaderSize = valueI; }
解決方案:
在Feign接口提供端的微服務中配置參數:
server:
max-http-header-size: 20480