關於Websocket一次Broken pipe的異常處理
阿新 • • 發佈:2019-02-04
最近公司開發的一個專案,使用了Websocket。在測試環境是沒有什麼問題,可以正常使用。但是在部署到生產環境之後,呼叫websocket後。如果一分鐘內沒有進行互動則會自動斷開,同時有異常資訊“java.io.IOException: java.util.concurrent.ExecutionException: java.net.SocketException: Broken pipe”。針對這一問題,網上的回答各種各樣。在網上找到一個類似的算是解決了問題。
1、系統環境:Tomcat 7 、jdk 7、nginx
2、系統返回異常“java.io.IOException: java.util.concurrent.ExecutionException: java.net.SocketException:
Broken pipe ”
3、解決方法:在nginx對應的server下面把“proxy_read_timeout ” 的時間由60調整到600即可。
PS:
nginx比較強大,可以針對單個域名請求做出單個連線超時的配置.
比如些動態解釋和靜態解釋可以根據業務的需求配置
proxy_connect_timeout :後端伺服器連線的超時時間_發起握手等候響應超時時間
proxy_read_timeout:連線成功後_等候後端伺服器響應時間_其實已經進入後端的排隊之中等候處理(也可以說是後端伺服器處理請求的時間)
proxy_send_timeout :後端伺服器資料回傳時間_就是在規定時間之內後端伺服器必須傳完所有的資料