1. 程式人生 > >故障排查:是什麼 導致了客戶端批量心跳超時掉線

故障排查:是什麼 導致了客戶端批量心跳超時掉線

       心跳超時指的是:針對某個線上的客戶端(TCP連線),服務端在指定的時間內,沒有收到來自該客戶端的任何訊息,則認為該客戶端已經掉線。

       為什麼需要心跳機制了?因為針對某些客戶端掉線(可能是因為網路斷開、或客戶端程式退出),服務端不能立即感受到(有的可能需要過很長的時間才能感受到),所以,需要引入心跳機制,讓服務端儘可能早地發現客戶端已經不線上了。關於心跳機制,更詳細的介紹可以參見這裡

        如果發生了很多客戶端批量心跳超時掉線的情況,就說明服務端在過去的某段時間內,從未收到來自這些客戶端的任何心跳訊息。通常有3種可能性導致該情況發生:

1.CPU或記憶體使用率過高

       在該情況發生時,觀察一下服務端程序的CPU和記憶體是否有異常。

       比如,當CPU持續在100%時,就有可能導致接收資料的操作被停止。

2.處理某些資訊所花費的時間過長

        如果設定的是IocpDirectly,那麼依據IocpDirectly的原理,當處理某個資訊所花費的時間超過了服務端設定的心跳超時的時間,服務端就會將對應的客戶端誤判為心跳超時掉線。

        假設是該原因導致的心跳超時,則對應的解決方案有:

(1)找出那些處理非常耗時的資訊,進行優化理,加快處理速度。

(2)將超時時間間隔設定位一個更大的值或關閉心跳檢測。

(3)將資訊處理修改為非同步模式。

(4)將服務端資訊處理模型修改為,這樣就完全避免了由於資訊處理時間過長導致誤判的情況。

        很顯然,方案(1)是最好的也是根本性的解決方案。 

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

        如果排除了前面的可能性(比如,即使改成了TaskQueue模式,批量掉線仍然發生),那麼,幾乎就只剩下一個可能:服務端在心跳超時時間間隔內未收到來自這些客戶端的任何訊息。很可能來自客戶端的訊息被防火牆、路由器、或某些網路完全監控的相關軟硬體給擋住了。

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

(1)在伺服器上執行netstat命令,檢視目標埠的相關狀態資訊。

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

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

      經過以上的排查分析,應該都可以找到問題的根源所在,如果還是沒有結果,可以給我留言,我們一起討論下啊。    

相關推薦

故障排查是什麼 導致客戶批量心跳超時

       心跳超時指的是:針對某個線上的客戶端(TCP連線),服務端在指定的時間內,沒有收到來自該客戶端的任何訊息,則認為該客戶端已經掉線。        為什麼需要心跳機制了?因為針對某些客戶端掉線(可能是因為網路斷開、或客戶端程式退出),服務端不能立即感受到(有的可能需要過很長的時間才能感受到),所

故障排查是什麼 導致伺服器埠telnet失敗?

telnet命令的主要作用是與目標埠進行TCP連線(即完成TCP三次握手)。       當服務端啟動後,但是telnet其監聽的埠,卻失敗了。或者,當服務端運行了一段時間後,突然其監聽的埠telnet不通了。當類似這樣的telnet失敗的情況出現時,都可以按照如下方面

初涉掃碼登錄edusoho實現客戶掃碼登錄(簡版)

confirm 鍵值 版本號 error == form 通過 遮罩層 strrev 一、項目簡介及需求 edusoho是一套商業版的在線教育平臺,項目本身基於symfony2框架開發,現在有一款自己的APP,要求在不多修改edusoho自身代碼的基礎上,實現客戶端對P

springCloud(7)Ribbon實現客戶側負載均衡-消費者整合Ribbon

spring cloud ribbon 消費者整合ribbon 一、簡介 Ribbon是Netfix發布的負載均衡器,它有助於控制HTTP和TCP客戶端的行為。為Ribbon配置服務提供者地址列表後,Ribbon就可基於某種負載均衡算法,自動地幫助服務消費者去請求。Ribbon默認為我們提供了很

springCloud(8)Ribbon實現客戶側負載均衡-自定義Ribbon配置

spring cloud ribbon 自定義ribbon配置 一、簡介很多場景下,可能根據需要自定義的Ribbon的配置,例如修改Ribbon的負載均衡規則等。Spring cloud Camden允許使用Java代碼或屬性自定義Ribbon的配置。二、使用Java代碼自定義Ribbon配置在S

SVN使用技巧[4]TortoiseSVN客戶使用

刪除 svn服務器 1-1 技巧 svn客戶端 本地文件 版本 bsp 擁有 創建倉庫 檢出數據(從SVN服務器下載數據到本地) 更新本地版本為SVN服務器最新版本 添加文件 修改文件 刪除文件 恢復本地文件(修改/刪除了

java在聊天項目1.3版設計好友列表框功能補充,因只要用戶登錄就發送一串新列表,導致不同客戶好友列表不同問題

img trigge trace nim button lease local def 登錄用戶 解決完畢後效果圖: 好友列表Vector添加的時候進行判斷,如果有相同的則不添加 int flag=0; for (int i = 0; i < names

exchange服務器證書過期,導致outlook客戶不停的彈出證書過期的警告窗口

exchange 服務器 證書過期 具體癥狀:exchange服務器證書過期,導致outlook客戶端不停的彈出證書過期的警告窗口(但點擊警告窗口確定之後,outlook客戶端仍舊可以使用。且OWA一切正常)。 於是決定在過期的證書上續訂證書。續訂證書的方法為: 1,右鍵單擊過期證書----續訂證

[ 搭建Redis本地服務器實踐系列三 ] 圖解Redis客戶工具連接Redis服務器

done not 必須 tin 復雜 start exe eas 方便 上一章 [ 搭建Redis本地服務器實踐系列二 ] :圖解CentOS7配置Redis 介紹了Redis的初始化腳本文件及啟動配置文件,並圖解如何以服務的形式來啟動、終止Redis服務,可以說我們的R

Netty(二)簡單的客戶服務demo

cat println 客戶端連接 監聽端口 rbo 異常 服務端 max auth 使用Java IO實現客戶端服務端 服務端監聽端口 客戶端連接服務端 客戶端循環寫數據到服務端 import java.io.IOException; import java.net.S

如何安裝和配置打印服務器之六自定義客戶電腦使用網絡打印機的默認設置

oss strong mode 客戶端 pre 51cto col str 裝配 如何安裝和配置打印服務器之六:自定義客戶端電腦使用網絡打印機的默認設置 ?Lander Zhang 專註外企按需IT基礎架構運維服務,IT Helpdesk 實戰培訓踐行者http://blo

記筆記C# Socket客戶監聽伺服器處理方案【同步】

方案主要功能:        (1)客戶端同步監聽來自伺服器端的資料(開啟子執行緒監聽)        (2)客戶端向伺服器端傳送資料(主執行緒傳送,並控制)        

客戶批量安裝zabbix-agent

手動安裝zabbix-agent 少量linux客戶機的情況下,手動安裝zabbix-agent: 登入https://repo.zabbix.com/zabbix,這裡以3.4版,CentOS7為例: #rpm -i https://repo.zabbix.com/zabbix/3.4/r

NetCore實踐篇分散式監控客戶ZipkinTracer從入門到放棄之路

上面三篇文章普及了一些依賴注入的知識。sorry,這塊我研究的很淺。。。這次順帶了解了不少,以後要抽空專門研究一下。 Single:單例是一個將持續應用程式整個生命週期的例項。在Web術語中,這意味著在服務的初始請求之後,每個後續請求將使用相同的例項。這也意味著它跨越Web請求(因此

Spring Cloud 入門教程(五) Ribbon實現客戶的負載均衡

接上節,假如我們的Hello world服務的訪問量劇增,用一個服務已經無法承載, 我們可以把Hello World服務做成一個叢集。  很簡單,我們只需要複製Hello world服務,同時將原來的埠8762修改為8763。然後啟動這兩個Spring Boot應用, 就可

Elasticsearch Java client(ES Client 簡介、Java REST Client、Java Client、Spring Data Elasticsearch) elasticsearch系列七ES Java客戶-Elasticsearch Java client(E

elasticsearch系列七:ES Java客戶端-Elasticsearch Java client(ES Client 簡介、Java REST Client、Java Client、Spring Data Elasticsearch) 一、ES Client 簡介 1. ES是一個服務

【SpringCloud Greenwich版本】第八章配置中心客戶(config client)

一、SpringCloud版本 本文介紹的Springboot版本為2.1.1.RELEASE,SpringCloud版本為Greenwich.RC1,JDK版本為1.8,整合環境為IntelliJ IDEA 二、config client介紹 Spring Boot應用程式可以

HTML5+規範Events(管理客戶事件)

    Events模組管理客戶端事件,包括系統事件,如擴充套件API載入完畢、程式前後臺切換等。 1、常量 1.1、"plusready": 擴充套件API載入完成事件       document.addEventListener( "plusready", plusr

三次握手的第三個ACK包丟——客戶認為連線建立,寫資料時,會觸發RST

序 上次面試被問到一個問題,在TCP建立連線的三次握手階段,如果客戶端傳送的第三個ACK包丟了,那麼客戶端和伺服器端分別進行什麼處理? 聽到問題,一下愣掉,有點傻了,根據讀書時模模糊糊的印象,答了答,無疑打錯了T...T 分析

Token Vending Machine移動應用客戶安全訪問AWS服務的解決方案

背景介紹 廣大移動網際網路應用和移動遊戲開發者在利用AWS服務進行開發過程中,經常需要為移動客戶端提供AWS服務訪問安全證書,以便讓這類移動端應用有許可權直接訪問AWS服務,比如通過AWS S3服務上傳圖片檔案或者通過AWS SQS服務傳送訊息。 有些移動開發