1. 程式人生 > >Connection reset by peer的常見原因及解決辦法

Connection reset by peer的常見原因及解決辦法

1,如果一端的Socket被關閉(或主動關閉,或因為異常退出而 引起的關閉),另一端仍傳送資料,傳送的第一個資料包引發該異常(Connect reset by peer)。

Socket預設連線60秒,60秒之內沒有進行心跳互動,即讀寫資料,就會自動關閉連線。

2,一端退出,但退出時並未關閉該連線,另一端如果在從連線中讀資料則丟擲該異常(Connection reset)。

簡單的說就是在連線斷開後的讀和寫操作引起的。

Connection reset by peer的常見原因:

1)伺服器的併發連線數超過了其承載量,伺服器會將其中一些連線關閉;
如果知道實際連線伺服器的併發客戶數沒有超過伺服器的承載量,則有可能是中了病毒或者木馬,引起網路流量異常。可以使用netstat -an檢視網路連線情況。
2)客戶關掉了瀏覽器,而伺服器還在給客戶端傳送資料;
3)瀏覽器端按了Stop;
這兩種情況一般不會影響伺服器。但是如果對異常資訊沒有特別處理,有可能在伺服器的日誌檔案中,重複出現該異常,造成伺服器日誌檔案過大,影響伺服器的執行。可以對引起異常的部分,使用try…catch捕獲該異常,然後不輸出或者只輸出一句提示資訊,避免使用e.printStackTrace();輸出全部異常資訊。
4)防火牆的問題;
如果網路連線通過防火牆,而防火牆一般都會有超時的機制,在網路連線長時間不傳輸資料時,會關閉這個TCP的會話,關閉後在讀寫,就會導致異常。 如果關閉防火牆,解決了問題,需要重新配置防火牆,或者自己編寫程式實現TCP的長連線。實現TCP的長連線,需要自己定義心跳協議,每隔一段時間,傳送一次心跳協議,雙方維持連線。
5)JSP的buffer問題。
JSP頁面預設快取為8k,當JSP頁面資料比較大的時候,有可能JSP沒有完全傳遞給瀏覽器。這時可以適當調整buffer的大小。

第1個異常是java.net.BindException:Address already in use: JVM_Bind。

該異常發生在伺服器端進行new ServerSocket(port)(port是一個0,65536的整型值)操作時。異常的原因是以為與port一樣的一個埠已經被啟動,並進行監聽。此時用netstat –an命令,可以看到一個Listending狀態的埠。只需要找一個沒有被佔用的埠就能解決這個問題。

第2個異常是java.net.ConnectException: Connection refused: connect。

該異常發生在客戶端進行 new Socket(ip, port)操作時,該異常發生的原因是或者具有ip地址的機器不能找到(也就是說從當前機器不存在到指定ip路由),或者是該ip存在,但找不到指定的埠進行監聽。出現該問題,首先檢查客戶端的ip和port是否寫錯了,如果正確則從客戶端ping一下伺服器,看是否能 ping通,如果能ping通(服務伺服器端把ping禁掉則需要另外的辦法),則看在伺服器端的監聽指定埠的程式是否啟動,這個肯定能解決這個問題。

第3個異常是java.net.SocketException: Socket is closed,該異常在客戶端和伺服器均可能發生。

異常的原因是己方主動關閉了連線後(呼叫了Socket的close方法)再對網路連線進行讀寫操作。

第4個異常是java.net.SocketException: (Connection reset或者 Connect reset by peer:Socket write error)。

該異常在客戶端和伺服器端均有可能發生,引起該異常的原因有兩個,第一個就是如果一端的Socket被關閉(或主動關閉或者因為異常退出而引起的關閉),另一端仍傳送資料,傳送的第一個資料包引發該異常 (Connect reset by peer)。另一個是一端退出,但退出時並未關閉該連線,另一端如果在從連線中讀資料則丟擲該異常(Connection reset)。簡單的說就是在連線斷開後的讀和寫操作引起的。

第5個異常是java.net.SocketException: Broken pipe。該異常在客戶端和伺服器均有可能發生。

在第4個異常的第一種情況中(也就是丟擲SocketExcepton:Connect reset by peer:Socket write error後),如果再繼續寫資料則丟擲該異常。前兩個異常的解決方法是首先確保程式退出前關閉所有的網路連線,其次是要檢測對方的關閉連線操作,發現對方關閉連線後自己也要關閉該連線。

客戶端錯誤程式碼10053 Software caused connection abort(軟體原因導致連線中斷)

rabbitMQ連線斷開問題

猜測:pika客戶端沒有及時傳送心跳,連線被server斷開

一開始修改了heartbeat_interval引數值, 示例如下:

def test_main():
    s_conn = pika.BlockingConnection(
        pika.ConnectionParameters('127.0.0.1', 
            heartbeat_interval=10,
            socket_timeout=5,
            credentials=pika.PlainCredentials(USER, PWD)))
    # ....

去看它的api,看到heartbeat_interval的解析:

:param int heartbeat_interval: How often to send heartbeats.
                                  Min between this value and server's proposal
                                  will be used. Use 0 to deactivate heartbeats
                                  and None to accept server's proposal.

按這樣說法,應該還是沒有把心跳值給設定好。上面的程式期望是10秒發一次心跳,但是理論上傳送心跳的間隔會比10秒多一點。所以艾瑪,我應該是把heartbeat_interval的作用搞錯了, 它是指超過這個時間間隔不發心跳或不給server任何資訊,server就會斷開連線, 而不是說pika會按這個間隔來發心跳。 結果我把heartbeat_interval值設定高一點(比實際傳送心跳/資訊的間隔更長),比如上面設定成60秒,就正常運行了。

如果不指定heartbeat_interval, 它預設為None, 意味著按rabbitMQ server的配置來檢測心跳是否正常。
如果設定heartbeat_interval=0, 意味著不檢測心跳,server端將不會主動斷開連線。

相關推薦

nginx php fastcgi Connection reset by peer原因解決辦法

 如果知道實際連線伺服器的併發客戶數沒有超過伺服器的承載量,則有可能是中了病毒或者木馬,引起網路流量異常。可以使用netstat-an檢視網路連線情況。 2)客戶關掉了瀏覽器,而伺服器還在給客戶端傳送資料; 3)瀏覽器端按了Stop;   這兩種情況一般不會影響伺服器。但是如果對異常資訊沒有特別處理,有可能在

connection reset by peer問題總結解決方案

net 方維 catch 火墻 tst buffer 整理 pos 在服務器 找遍了 中英文網站,翻遍了能找的角落,發現了出現故障的原因和原理,及改如何處理,這裏記錄下,希望能幫助到有需要的小夥伴,少走點彎路, 以上就整理內容: connection res

Connection reset by peer常見原因解決辦法

1,如果一端的Socket被關閉(或主動關閉,或因為異常退出而 引起的關閉),另一端仍傳送資料,傳送的第一個資料包引發該異常(Connect reset by peer)。 Socket預設連線60秒,60秒之內沒有進行心跳互動,即讀寫資料,就會自動關閉連線

Connection reset by peer原因

經常出現的Connection reset by peer: 原因可能是多方面的,不過更常見的原因是:①:伺服器的併發連線數超過了其承載量,伺服器會將其中一些連線Down掉;②:客戶關掉了瀏覽器,而伺服器還在給客戶端傳送資料;③:瀏覽器端按了Stop[10054] Conne

Python+Selenium定位不到元素常見原因解決辦法(報:NoSuchElementException)

Python+Selenium定位不到元素常見原因及解決辦法(報:NoSuchElementException)      在做web應用的自動化測試時,定位元素是必不可少的,這個過程經常會碰到定位不到元素的情況(報selenium.common.exceptions.

_062_Android_OOM出現常見原因解決辦法

轉自https://blog.csdn.net/hudfang/article/details/51781997,感謝作者的無私分享。 Android的虛擬機器是基於暫存器的Dalvik,它的最大堆大小一般是16M,有的機器為24M。我們平常看到的OutOfMemory的錯誤,通常 是堆記憶體溢

記憶體溢位的常見原因解決辦法

Tomcat本身不能直接在計算機上執行,需要依賴於硬體基礎之上的作業系統和一個Java虛擬機器。Tomcat的記憶體溢位本質就是JVM記憶體溢位,所以在本文開始時,應該先對Java JVM有關記憶體方面的知識進行詳細介紹。 一、Java JVM記憶體介紹 JVM管理兩

Connection reset by peer常見原因

路由 可能 tcp 個數 exc 時間 ... 連接 tst 1,如果一端的Socket被關閉(或主動關閉,或因為異常退出而 引起的關閉),另一端仍發送數據,發送的第一個數據包引發該異常(Connect reset by peer)。 Socket默認連接60秒,60秒之內

Connection reset by peer: socket write error錯誤分析解決

Connection reset by peer: socket write error錯誤分析:常出現的Connection reset by peer: 原因可能是多方面的,不過更常見的原因是:  ①:伺服器的併發連線數超過了其承載量,伺服器會將其中一些連線Down掉; 

ECS雲主機SSH連接提示“Connection reset by peer”的解決辦法解決思路

阿裏雲 運維思想 工單支持 三周前剛從上家公司換到新的公司,這家公司與上家公司相比對阿裏雲的雲計算環境更加的依賴,使用的ECS實例和其他服務如SLB、RDS、OSS等更多了一個數量級。這篇文章的背景就是為了解決阿裏雲ECS雲主機SSH連接的一個問題,從故障發現到故障排除到最後反思的一個詳細

下載標準庫libcxx出現svn: E000104: Error running context: Connection reset by peer解決方案

使用svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_500/final libcxx下載標準庫libcxx出現svn: E000104: Error running context: Connection reset b

java使用axis呼叫webservice時出現Connection reset by peer: socket write error的一種解決方法

call.addParameter( new QName(nameSpace,"excelContent"), org.apache.axis.encoding.XMLType.SOAP_BASE64BINARY, javax.xml.rpc.ParameterMode.I

Linux連線總是報:connection reset by peer問題!!!程式退出的解決辦法

求救:Linux連線總是報:connection reset by peer問題!!! 各位大哥:小弟我在Linux下寫的服務程式,當壓力很大(連線客戶量多頻繁、傳送請求頻繁)的時候,服務總是會部分連線報connection reset by peer錯誤,結

Redis遠端連線失敗-“Connection reset by peer”的解決方式(Win10以及Ubuntu)

每篇一句: The business of life is the acquisition of memories. In the end that’s all there is. 問題出現: 今天在在本機(Windows 10)以及虛擬

ab測試出現error: connection reset by peer解決方案

我們在使用一些開源程式之前,可能會使用ab工具在伺服器或者本地進行一次效能評估,但是很多時候卻總是會以失敗告終,因為,伺服器會拒絕你的ab工具發出的http請求, 出現 error: connection reset by peer, 這該怎麼辦呢? 首先,為了測試一個具有sql操作的頁面,通常需要登入,這

Connection reset by peer原因

今天開了100個執行緒去連線server, read資料的時候出現了,read返回-1的情況,errno的值是104. 104應該是 connection reset by peer。 網路查詢知道, Connection reset by peer的常見原因: 1.

【OpenStack】SSH登入虛擬機器出現"Read from socket failed: Connection reset by peer"問題的解決辦法

宣告: 本部落格歡迎轉發,但請保留原作者資訊! 新浪微博:@孔令賢HW; 內容系本人學習、研究和總結,如有雷同,實屬榮幸! 1、問題現象 版本:Grizzly master分支程式碼2013.06.17 部署:三個節點(Controller/Compute + Netw

轉--如何解決connection reset by peer(參考使用)

rtsp 類 http 是文字協議,但是 state-full 它需要 method 或者信令來保持 state 比如 server 端的以下信令 SETUP: Causes the server to allocate resources for a stream and start an RTSP se

解決 recv() failed (104: Connection reset by peer) while reading response header from upstream

Nginx出現502 Bad Gateway 錯誤, 查了Nginx的錯誤日誌為: 2014/08/02 16:14:31 [error] 17029#0: *17941 recv() failed (104: Connection reset by peer) whil

LR回放https協議腳本失敗:[GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX" failed:[10054] Connection reset by peer [MsgId:MERR-27780]

網絡連接 advance sgid 服務器 vuser con run load sgi 最近做一個負載均衡項目的性能測試,使用LR錄制腳本協議為https協議,回放腳本時出現報錯: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "