1. 程式人生 > >關於Websocket一次Broken pipe的異常處理

關於Websocket一次Broken pipe的異常處理

最近公司開發的一個專案,使用了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 :後端伺服器資料回傳時間_就是在規定時間之內後端伺服器必須傳完所有的資料