故障排查:是什麼導致了客戶端批量心跳超時掉線(轉)
故障排查:是什麼 導致了客戶端批量心跳超時掉線
心跳超時指的是:針對某個線上的客戶端(TCP連線),ESFramework服務端在指定的時間內,沒有收到來自該客戶端的任何訊息,則認為該客戶端已經掉線。
為什麼需要心跳機制了?因為針對某些客戶端掉線(可能是因為網路斷開、或客戶端程式退出),服務端不能立即感受到(有的可能需要過很長的時間才能感受到),所以,需要引入心跳機制,讓服務端儘可能早地發現客戶端已經不線上了。關於心跳機制,更詳細的介紹可以參見這裡。
如果發生了很多客戶端批量心跳超時掉線的情況,就說明服務端在過去的某段時間內,從未收到來自這些客戶端的任何心跳訊息。通常有3種可能性導致該情況發生:
1.CPU或記憶體使用率過高
在該情況發生時,觀察一下服務端程式的CPU和記憶體是否有異常。
比如,當CPU持續在100%時,就有可能導致接收資料的操作被停止。
2.處理某些資訊所花費的時間過長
如果服務端的資訊處理模型設定的是IocpDirectly,那麼依據IocpDirectly的原理,當處理某個資訊所花費的時間超過了服務端設定的心跳超時的時間,服務端就會將對應的客戶端誤判為心跳超時掉線。
假設是該原因導致的心跳超時,則對應的解決方案有:
(1)找出那些處理非常耗時的資訊,進行優化理,加快處理速度。
(2)將超時時間間隔設定位一個更大的值或關閉心跳檢測。
(3)將資訊處理修改為非同步模式。
(4)將服務端資訊處理模型修改為TaskQueue模式,這樣就完全避免了由於資訊處理時間過長導致誤判的情況。
很顯然,方案(1)是最好的也是根本性的解決方案。
3.伺服器網路拓撲結構、防火牆、路由器、網路安全監控等相關軟硬體
如果排除了前面的可能性(比如,即使改成了TaskQueue模式,批量掉線仍然發生),那麼,幾乎就只剩下一個可能:服務端在心跳超時時間間隔內未收到來自這些客戶端的任何訊息。很可能來自客戶端的訊息被防火牆、路由器、或某些網路完全監控的相關軟硬體給擋住了。
此時,需要專業的運維人員或網管人員參與進來,協助排查問題,比如:
(1)在伺服器上執行netstat命令,檢視目標埠的相關狀態資訊。
(2)在伺服器上執行抓包工具,監測目標埠上是否有資料從客戶端過來。
(3)分析伺服器的網路拓撲結構,並以伺服器為中心,依次向外檢查防火牆、路由器、網路安全監控等相關軟硬體等的設定,並進行鍼對性的排查測試。
經過以上的排查分析,應該都可以找到問題的根源所在,如果還是沒有結果,可以給我留言,我們一起討論下啊。
http://www.cnblogs.com/zhuweisky/p/4401435.html
相關文章
- 故障排查:是什麼 導致了客戶端批量心跳超時掉線客戶端
- 故障排查:是什麼導致了伺服器埠telnet失敗?伺服器
- 故障排查:是什麼 導致了伺服器埠telnet失敗?伺服器
- 什麼是客戶端渲染?客戶端
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- 4.2.14 啟用客戶端快速連線故障轉移客戶端
- 客戶端連線故障檢查流程手段客戶端
- 什麼原因會導致raid掉陣AI
- 4.2.14.1 關於啟用客戶端快速連線故障轉移客戶端
- Oracle RAC 客戶端故障轉移(failover) TAFOracle客戶端AI
- MySQL:MySQL客戶端快取結果導致OOMMySql客戶端快取OOM
- 當上傳檔案時,客戶端對伺服器說了些什麼?客戶端伺服器
- Eureka客戶端原始碼解析 註冊/心跳/本地重新整理/下線客戶端原始碼
- 4.2.14.3 為Oracle呼叫介面客戶端啟用快速連線故障轉移Oracle客戶端
- HBase最佳實踐-客戶端超時機制客戶端
- (轉)hbase master掛掉-zookeeper連線超時原因AST
- kickstart之批量安裝puppet客戶端客戶端
- 幾年前,為什麼我擼了一套RabbitMQ客戶端?MQ客戶端
- 什麼是客戶分析,為什麼它很重要?
- impala客戶端連線客戶端
- Redis客戶端連線Redis客戶端
- VNC客戶端是Windows,VNC客戶端是Windows如何進行操作VNC客戶端Windows
- AIX系統中安裝ORACLE,客戶端連線時,監聽會宕掉的問題AIOracle客戶端
- MQTT 客戶端出現連線訂閱等問題時如何排查?MQQT客戶端
- HTTP客戶端連線,選擇HttpClient還是OkHttp?HTTP客戶端client
- Redis連線超時排查實錄Redis
- 客戶端怎麼連線到伺服器?客戶端伺服器
- CRM系統:客戶保留是什麼意思?
- DB2客戶端大家用什麼?DB2客戶端
- 故障分析 | 手動 rm 掉 binlog 導致主從報錯
- Drive客戶端因SSL證書已更改導致聯機失敗客戶端
- 4.2.14.2 為JDBC客戶機啟用快速連線故障轉移JDBC
- 11g R2 客戶端連線時斷時續客戶端
- 【Azure Redis】Lettuce客戶端遇見連線Azure Redis長達15分鐘的超時Redis客戶端
- 應用連線超時排查DB MySQLMySql
- 轉Oracle安裝臨時客戶端使用總結Oracle客戶端
- ftp客戶端,ftp客戶端軟體具體怎麼使用?FTP客戶端
- mysql、redis 客戶端連線池MySqlRedis客戶端