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