nginx的坑-org.apache.http.TruncatedChunkException: Truncated chunk( expected size: 7752; actual siz...

org.apache.http.TruncatedChunkException: Truncated chunk

項目中使用請求遠程接口報錯 ,項目是Spring-boot的,兩個項目(A和B) , A調用B的rest接口,返回json數據,A系統報錯以下異常,B系統沒有報錯。
記錄一下處理方式,方便再次遇到這個問題的人java

#項目異常信息 org.apache.http.TruncatedChunkException: Truncated chunk ( expected size: 7752; actual size: 4077) at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:186) at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138) at <mypackage>.<MyServlet>.service(<MyServlet>.java:XXX) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:724) 

當系統報以上錯誤時,接口表現出來的是數據傳輸不完整, 好比說接口返回 json , 那麼接收到的數據可能會少一截,json 數聽說不定會少個 } ,此時json就沒法反序列化了。說白了就是丟包了。nginx

經過大半天的查找,終於定位到是nginx的問題,由於nginx處理chunked傳輸有問題。
因此最簡單的處理方式是把nginx的緩存關閉。apache

proxy_buffering off;
相關文章
相關標籤/搜索