1. 程式人生 > >伺服器端出現大量SYN_RECV狀態,導致客戶端無法連線

伺服器端出現大量SYN_RECV狀態,導致客戶端無法連線

程式背景:

客戶端與服務端通過短連線通訊,客戶端傳送訊息頻率為 600條/秒

BUG現象:

客戶端向服務端傳送一段時間的訊息後,客戶端無法與服務段建立連線,

檢視服務端埠狀態

netstat -an|grep 37058

發現存在大量SYN_RECV以及CLOSE_WAIT

檢視客戶端埠狀態

netstat -an|grep 37058

發現存在大量的SYN_SENT以及FIN_WAIT_1

由於在服務端日誌中曾經出現個 104 這個錯誤碼,OS error code 104:  Connection reset by peer

而產生這個錯誤碼後,會觸發SIGPIPE訊號。

因此猜想,出現SYN_RECV 和CLOSE_WAIT狀態,是由於ACCEPT以及CLOSE函式呼叫時,被SIGPIPE中斷,導致當時函式正在處理的端口出現異常狀態。

BUG解決:

通過signal(SIGPIPE,SIG_ING) 忽略SIGPIPE訊號,防止端口出現SYN_RECV以及CLOSE_WAIT狀態。

相關推薦

伺服器出現大量SYN_RECV狀態導致客戶無法連線

程式背景: 客戶端與服務端通過短連線通訊,客戶端傳送訊息頻率為 600條/秒 BUG現象: 客戶端向服務端傳送一段時間的訊息後,客戶端無法與服務段建立連線, 檢視服務端埠狀態 netstat -an|grep 37058 發現存在大量SYN_RECV以及CLOSE_WAI

出現身份驗證錯誤要求的函式不支援導致遠端桌面無法連線的問題

首先修改加密Oracle 另把一下程式碼編輯成cmd格式的檔案後以管理員執行即可。 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft-Windows-Gro

伺服器出現大量SYN_RECV狀態的TCP連線的問題分析

首先我們需要弄清楚SYN_RCVD狀態是怎樣產生的,通過TCP狀態轉換圖(如下圖)我們可以清楚的看到,SYN_RCVD是TCP三次握手的中間狀態,是服務埠(監聽埠,如應用伺服器的80埠)收到SYN包併發送[SYN,ACK]包後所處的狀態。這時如果再收到ACK的包,就

解決-伺服器Linux存在大量time_wait的問題,導致服務效能問題甚至嚴重的將訪問不了應用

netstat -an檢視到大量的TIME_WAIT狀態的解決辦法 近期伺服器出現大量time_wait的TCP連線造成伺服器連線數過多而最終導致tomcat假死狀態。連線伺服器檢視連線數的時候提示如下。 [[email protected] apache-tomcat-7.

無法向會話狀態伺服器發出會話狀態請求。請確保 ASP.NET State Service (ASP.NET 狀態服務)已啟動並且客戶埠與伺服器埠相同。如果伺服器位於遠端計算機上請檢查。。。

無法向會話狀態伺服器發出會話狀態請求。請確保 ASP.NET State Service (ASP.NET 狀態服務)已啟動,並且客戶端埠與伺服器埠相同。如果伺服器位於遠端計算機上,請檢查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspn

無法向會話狀態服務器發出會話狀態請求。請確保 ASP.NET State Service (ASP.NET 狀態服務)已啟動並且客戶口與服務器口相同...

異常 無法 程序 cnblogs blog net ... .net asp.net 異常的具體顯示如下圖: 解決方案: (該異常並非程序異常,只是沒有開啟進程外session服務,開啟就能解決這樣的問題了) 第一步: 第二步: 重新訪問,網站正常了,問題解決

避免客戶緩存腳本導致文件升級後用戶的腳步未發生變化

用戶 data- 時間 多少 頁面 javascrip class scrip 放棄 在js路徑後跟 ?v=... 的作用:避免客戶端緩存腳本,導致文件升級後用戶的腳步未發生變化。什麽文件會被瀏覽器緩存?當然是大多數靜態文件--也就是很長一段時間都不會修改的文件,js文件也

客戶的鍵盤錄入字元如aaa. 伺服器接收aaa並在控制檯上列印aaa.然後將其轉換為大寫AAA返回到客戶客戶列印到客戶控制檯上

伺服器端: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net

嵌入式Linux網路程式設計I/O多路複用epoll()示例epoll()客戶epoll()伺服器單鏈表

文章目錄 1,I/O多路複用 epoll()示例 1.1,epoll()---net.h 1.2,epoll()---client.c 1.3,epoll()---sever.c 1.4,epoll()---linklist.h

嵌入式Linux網路程式設計I/O多路複用poll()示例poll()客戶poll()伺服器單鏈表

文章目錄 1,IO複用poll()示例 1.1,poll()---net.h 1.2,poll()---client.c 1.3,poll()---sever.c 1.4,poll()---linklist.h 1.5,p

嵌入式Linux網路程式設計I/O多路複用select()示例select()客戶select()伺服器單鏈表

文章目錄 1,IO複用select()示例 1.1 select()---net.h 1.2 select()---client.c 1.3 select()---sever.c 1.4 select()---linklist.h

ICP 3.1社群版貌似這幾天安裝出現helm的錯誤導致catalog 及helm release的圖形介面功能無法使用。

ICP 3.1社群版貌似這幾天安裝出現helm的錯誤,導致catalog 及helm release的圖形介面功能無法使用。 只能看3.1.1是否有問題了。     TASK [Creating the install lock file] ***********

windows上搭建NFS伺服器--haneWINLinux客戶掛載

在進行嵌入式開發時常常需要在板子上用nfs掛載宿電腦, 公司現在的架構是遠端伺服器加windows個人電腦,因此需要在個人電腦的windows系統上搭建NFS伺服器。 一、windows上搭建NFS伺服

gitlab伺服器url地址變更後tortoisegit客戶修改

gitlab伺服器地址更換,舊專案需要更改ip,在.git資料夾下config檔案修改 http拉取gitlab專案每次都提示輸入使用者密碼,使用以下命令 git config --global credential.helper store – 檢視使用者列表

解析json物件出現$ref:等錯誤導致前臺無法獲取資料然後出錯

問題描述:今天在網前臺傳遞資料的時候,一直undefined,導致一直報錯。 使用的是fastjson轉換的資料到前臺。 前臺拿到資料的格式:   最後發現是有迴圈引用,因為後臺快取是樹狀的資料,有父子級關係。導致fastjson轉換的時候發現有迴圈引用的時

Explorer : 釋出一個key-value儲存系統帶有客戶伺服器

Explorer 一個key-value儲存系統,帶有客戶端和伺服器端。使用非常方便。 使用B+樹作為儲存引擎,客戶端和伺服器端使用TCP協議進行通訊。   程式碼採用C++實現,底層將客戶端和伺服器通訊封裝成了一個網路庫,裡面還有些還不錯的實現可供看看,比如

三、ESP8266AT開發之STA模式下ESP8266建立伺服器建立客戶(解決防火牆)

Station模式和AP模式區別 AP模式下,8266自己發出訊號,客戶端可以連。 STA模式8266處於基站接收訊號,所以需要共同連線一個外面的WiFi ESP8266做伺服器,

網路通訊實現客戶伺服器的通訊

      write(new_fd,buf,strlen(buf));    }    }else{      perror("fork");    }}int main(int argc,char *argv[]){    if(argc!=3){       printf("Usage ./server

C++基礎--完善Socket C/S 實現客戶伺服器斷開重連

相關文章 1 // WindowsSocketServer.cpp : 定義控制檯應用程式的入口點。 2 // 3 4 #include "stdafx.h" 5 #include <iostream&

基於websocket的網頁即時通訊(可傳附件圖片塗鴉、最小化狀態通知).NETwinform客戶、服務

公司網站需要即時通訊,就研究了下主要以下功能:websocket通訊,網頁端即時通訊,可以傳送表情,可以傳送附件,可以塗鴉,可以實現客服一對多聊天,winform做服務端負責收發,notification提醒,一番百度下來發現websocket做客戶端+superwebsoc