#项目异常信息
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处理chunked传输有问题。 所以最简单的处理方式是把nginx的缓存关闭。

proxy_buffering off;