发送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