故障排查:是什麼 導致了客戶端批量心跳超時掉線
心跳超時指的是:針對某個線上的客戶端(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服務傳送訊息。 有些移動開發