溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決ConnectionError的問題

發(fā)布時(shí)間:2021-03-05 13:59:31 來源:億速云 閱讀:2019 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何解決ConnectionError的問題,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

  如何解決ConnectionError

  例如我們線上的網(wǎng)關(guān)日志就會(huì)拋該錯(cuò)誤:

  155739_bWFp_1990220.png

  從日志中可以看到是Socket套接字在read數(shù)據(jù)時(shí)拋出了該錯(cuò)誤。

  導(dǎo)致“Connectionreset”的原因是服務(wù)器端因?yàn)槟撤N原因關(guān)閉了Connection,而客戶端依然在讀寫數(shù)據(jù),此時(shí)服務(wù)器會(huì)返回復(fù)位標(biāo)志“RST”,然后此時(shí)客戶端就會(huì)提示“java.net.SocketException:Connectionreset”。

  可能有同學(xué)對(duì)復(fù)位標(biāo)志“RST”還不太了解,這里簡(jiǎn)單解釋一下:

  TCP建立連接時(shí)需要三次握手,在釋放連接需要四次揮手;例如三次握手的過程如下:

  第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);

  第二次握手:服務(wù)器收到syn包,并會(huì)確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);

  第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。

  可以看到握手時(shí)會(huì)在客戶端和服務(wù)器之間傳遞一些TCP頭信息,比如ACK標(biāo)志、SYN標(biāo)志以及揮手時(shí)的FIN標(biāo)志等。

  除了以上這些常見的標(biāo)志頭信息,還有另外一些標(biāo)志頭信息,比如推標(biāo)志PSH、復(fù)位標(biāo)志RST等。其中復(fù)位標(biāo)志RST的作用就是“復(fù)位相應(yīng)的TCP連接”。

  Connectionreset異常的一種解決辦法

  最近壓測(cè)時(shí),服務(wù)端系統(tǒng)出現(xiàn)了“Connectionreset”的異常,原因是服務(wù)器關(guān)閉了Connection[調(diào)用了Socket.close()方法]。當(dāng)檢查了應(yīng)用中沒有顯示關(guān)閉的鏈接的代碼后,調(diào)系統(tǒng)內(nèi)核的參數(shù)后壓測(cè)再無報(bào)錯(cuò):

  a.進(jìn)入:vim/etc/sysctl.conf

  b.添加:net.core.somaxconn=2048該參數(shù)默認(rèn)為128,根據(jù)實(shí)際場(chǎng)景調(diào)大

  c.執(zhí)行sysctl-p命令

  d.(可選)查看sysctl-a|grepsomaxconn

關(guān)于“如何解決ConnectionError的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI