org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body

发送http请求给后端服务,在数据量大的时候报错:java

org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 144445481; received: 25370248)
意思是数据传输被提早终止了,指望传输144445481 B,只是传输了25370248 B。数据库

http请求模型见上,在client用server的ip加端口访问服务,即便数据量大也没有问题。可是一旦经过域名访问,也就是经过Nginx访问,数据量大就会报上述错误。其实是Nginx对响应结果作了限制,若是Nginx超时时间设置的较短,而buffer很大的状况下,能够修改Nginx超时时间,将时间调大,这样在大数据量传输的过程当中就不会由于超时而终止。若是Nginx超时时间足够长,可是buffer较小的话,能够调大buffer来解决。apache

还有一点须要注意,就是同步异步的问题可能会引起这个问题,好比:后端

method A{异步

    语句1;大数据

    语句2(异步调用其余数据库查询);.net

    语句3(finally块关闭链接)server

}blog

在上面的逻辑中,若是方法A是同步调用,可是数据库查询是异步,可能的一种状况是:数据没有传输完成,可是语句3已经执行了,链接被关闭,也可能引起上面的问题。
--------------------- 
做者:anickname 
来源:CSDN 
原文:https://blog.csdn.net/javajxz008/article/details/82684479 
版权声明:本文为博主原创文章,转载请附上博文连接!ip

相关文章
相关标签/搜索