是什麼導致了客戶端TCP連不上伺服器?

来源:https://www.cnblogs.com/justnow/archive/2022/06/07/16351129.html
-Advertisement-
Play Games

當服務端啟動後,但是telnet其監聽的埠卻失敗了。或者當服務端運行了一段時間後,突然其監聽的埠telnet不通了。當類似這樣情況出現時,要如何排查問題所在了? ...


   這幾年做了很多基於 GGTalk開源即時通訊系統 的定製開發項目,經常會碰到如下兩個問題,分享出來,應該對大家會有所幫助:

(1)定製開發完成後,在給客戶部署GGTalk即時通訊服務端到正式的伺服器上時,經常出現GGTalk客戶端連不上伺服器的情況。

(2)部署好的GGTalk在運行的過程中,突然出現新的客戶端連不上登錄不了。

      這些時候,使用telnet命令測試,通常會發現telnet失敗了。

    telnet命令的主要作用是與目標埠進行TCP連接(即完成TCP三次握手)。

      當服務端啟動後,但是telnet其監聽的埠,卻失敗了。或者,當服務端運行了一段時間後,突然其監聽的埠telnet不通了。當類似這樣的telnet失敗的情況出現時,都可以按照如下方面進行排查:

1.觀察一下服務端進程的CPU和記憶體是否有異常。

       比如,當CPU持續在100%時,就有可能導致來自客戶端的TCP連接請求被丟棄或無暇處理。 

2.埠監聽器是否運行正常?

        GGTalk 服務端可以通過IRapidServerEngine的Advanced屬性的GetPortListenerState方法來獲取埠監聽器的狀態,該方法返回一個PortListenerState對象,其包含3個屬性:

(1)IsMaxConnection:是否達到了最大連接數的限制。

(2)IsListening:是否正在監聽埠。如果未授權,或達到了最大連接數限制,則將會停止監聽埠。

(3)LastDetectTime:最後一次檢測TCP連接隊列(已完成OS底層的三次握手,但尚未被ESFramework提取的TCP連接存放於該隊列中)的時間。 

        如果上述兩點都正常,則接下來,需要專業的運維人員或網管人當員參與進來協助排查。

3.在當前伺服器上執行telnet命令,看能否連接成功?

        如果能連接成功,至少表明本機的TCP握手請求是能正常地被接收和處理的。 

4.在伺服器上執行netstat命令

          netstat是一個非常有用的查看埠狀態的命令,執行netstat命令後,請註意查看以下信息:

(1)目標埠是否處於監聽狀態?

(2)目標埠上是否存在已成功建立的TCP連接(ESTABLISHED)?其數量是多少?

(3)是否存在半開連接(SYN_RECV)?其數量是多少?

(4)是否存在等待關閉的連接(TIME_WAIT)?其數量是多少?

          這裡,最有可能的原因是半開連接數達到最大限制,導致windows系統丟棄後續的TCP連接請求。 

5.TCP三次握手是否正常?

         對於一些奇怪現象的跟蹤與分析,數據抓包工具是不可缺少的。

         在伺服器上將抓包工具運行起來,然後在其他的電腦上telnet該伺服器的目標埠,通過抓包工具觀察目標埠上TCP三次握手的過程是否正常:

(1)目標埠是否收到了來自客戶端的SYN請求?

(2)目標埠有回覆SYN_ACK給客戶端?

(3)目標埠有收到來自客戶端的第三次握手?

         只有當TCP三次握手順利完成後,windows底層才會將建立好的TCP連接放入隊列中,提交給上層的應用程式。

6.伺服器網路拓撲結構、防火牆、路由器、網路安全監控等相關軟硬體

        在抓包分析的同時,結合伺服器的網路拓撲介面進行考慮是很有必要的。很可能來自客戶端的三次握手請求被防火牆、路由器、或某些網路完全監控的相關軟硬體給擋住了

        此時,需要專業的運維人員或網管人員參與進來,協助排查問題,比如:

(1)在伺服器上執行netstat命令,查看目標埠的相關狀態信息。

(2)在伺服器上執行抓包工具,監測目標埠上是否有數據從客戶端過來。

(3)分析伺服器的網路拓撲結構,並以伺服器為中心,依次向外檢查防火牆、路由器、網路安全監控等相關軟硬體等的設定,併進行針對性的排查測試。

 

     經過以上的排查分析,應該都可以找到問題的根源所在,如果還有疏漏的方面,可以給我留言一起討論。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、synchronized關鍵字簡介 synchronized是java中的一個關鍵字,在中文中為同步,也被稱之為'同步鎖',以此來達到多線程併發訪問時候的併發安全問題,可以用來修飾代碼塊、非靜態方法。靜態方法等; 修飾代碼塊時:給當前指定的對象加鎖 修飾非靜態方法時:作用於當前實例加鎖 修飾靜態 ...
  • 雙親委派機制:當某個類載入器準備載入一個.class位元組碼文件時,它首先將這個載入任務委派給上一級類載入器,上一級載入器再委派到更上一級類載入器,遞歸這個操作直到最頂級的類載入器。 一、類載入器的類別 在介紹Java的雙親委派機制的時候,不得不提ClassLoader(類載入器) 我們編譯的Java ...
  • 一、分散式鏈路追蹤發展簡介 1.1 分散式鏈路追蹤介紹 關於分散式鏈路追蹤的介紹,可以查看我前面的文章 微服務架構學習與思考(09):分散式鏈路追蹤系統-dapper論文學習(https://www.cnblogs.com/jiujuan/p/16097314.html) 。 這裡的 OpenTel ...
  • 條碼的應用已深入生活和工作的方方面面。在處理條碼時,常需要和各種文檔格式相結合。當需要在文檔中插入、編輯或者刪除條碼時,可藉助於一些專業的類庫工具來實現。本文,以操作PDF文件為例,介紹如何在編輯表格時,向單元格中添加條形碼。 【程式環境】 本次功能測試中,使用 Free Spire.PDF for ...
  • 1 Sentinel主頁 https://github.com/alibaba/Sentinel/wiki/%E4%B8%BB%E9%A1%B5 1.1 Sentinel介紹 隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 是面向分散式服務架構的流量控制組件,主要以流量為切 ...
  • 前言 dubbo是一款微服務開發框架,它提供了 RPC通信 與 微服務治理 兩大關鍵能力。作為spring cloud alibaba體系中重要的一部分,隨著spring cloud alibaba在國內活躍起來,dubbo也越來越深受各大公司的青睞。本文就來對dubbo的spi機制源碼進行剖析,看 ...
  • ​ 問題描述 我在Eclipse上運行項目的時候,在我用fileUpload上傳圖片,等到下一次Tomcat刷新的時候,這個照片就沒了,而且點擊查看那個文件夾也查看不到有圖片文件。 原因 我後來在網上查詢相關資料發現是Eclipse整 合Tomcat的問題,因為他們整合之後,你用相對路徑上傳的圖片會 ...
  • 用戶 在系統里,用戶是一個核心概念。它代表了一個人的唯一身份標識,除了與角色、團隊、組織架構等有關,甚至還會影響到在同一個界面不同的用戶操作流程與顯示內容都會發生變化,再複雜一點的話,或許在同一個系統內的一個用戶進入到不同產品後的身份也會變化 用戶與角色 用戶可以擁有一個或多個角色,讓角色作為許可權組 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...