心跳超时指的是:针对某个在线的客户端(TCP连接),ESFramework服务端在指定的时间内,没有收到来自该客户端的任何消息,则认为该客户端已经掉线。

为什么需要心跳机制了?因为针对某些客户端掉线(可能是因为网络断开、或客户端程序退出),服务端不能立即感受到(有的可能需要过很长的时间才能感受到),所以,需要引入心跳机制,让服务端尽可能早地发现客户端已经不在线了。关于心跳机制,更详细的介绍可以参见这里

如果发生了很多客户端批量心跳超时掉线的情况,就说明服务端在过去的某段时间内,从未收到来自这些客户端的任何心跳消息。通常有3种可能性导致该情况发生:

1.CPU或内存使用率过高

在该情况发生时,观察一下服务端进程的CPU和内存是否有异常。

比如,当CPU持续在100%时,就有可能导致接收数据的操作被停止。

2.处理某些信息所花费的时间过长

如果服务端的信息处理模型设定的是IocpDirectly,那么依据IocpDirectly的原理,当处理某个信息所花费的时间超过了服务端设定的心跳超时的时间,服务端就会将对应的客户端误判为心跳超时掉线。

假设是该原因导致的心跳超时,则对应的解决方案有:

(1)找出那些处理非常耗时的信息,进行优化理,加快处理速度。

(2)将超时时间间隔设定位一个更大的值或关闭心跳检测。

(3)将信息处理修改为异步模式。

(4)将服务端信息处理模型修改为TaskQueue模式,这样就完全避免了由于信息处理时间过长导致误判的情况。

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

3.服务器网络拓扑结构、防火墙、路由器、网络安全监控等相关软硬件

如果排除了前面的可能性(比如,即使改成了TaskQueue模式,批量掉线仍然发生),那么,几乎就只剩下一个可能:服务端在心跳超时时间间隔内未收到来自这些客户端的任何消息。很可能来自客户端的消息被防火墙、路由器、或某些网络完全监控的相关软硬件给挡住了。

此时,需要专业的运维人员或网管人员参与进来,协助排查问题,比如:

(1)在服务器上执行netstat命令,查看目标端口的相关状态信息。

(2)在服务器上执行抓包工具,监测目标端口上是否有数据从客户端过来。

(3)分析服务器的网络拓扑结构,并以服务器为中心,依次向外检查防火墙、路由器、网络安全监控等相关软硬件等的设定,并进行针对性的排查测试。

经过以上的排查分析,应该都可以找到问题的根源所在,如果还是没有结果,可以给我留言,我们一起讨论下啊。

故障排查:是什么 导致了客户端批量心跳超时掉线相关推荐

  1. mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查

    mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查 Got fatal error 1236 from master when reading data from binar ...

  2. K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

    K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 文章目录 K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 1.Node节点资源不足可能会产生的故障 2.Node节点 ...

  3. 服务器系统导致无盘客户机usb失灵,无盘客户机无法启动/故障排查过程

    下面的文章是我们客服中心的同事收集,郭有勇同学整理的,在此表示感谢. 1:原因:找不到引导分区 排查对象:配置.磁盘-镜像损毁-磁盘故障 2:原因:引导启动失败 排查对象:网络.配置.磁盘 -局域网多 ...

  4. mysql慢查询导致502_MySQL Statement cancellation timer故障排查分享

    1.现象 10月26日晚22:07,X服务的线上机器502,期间没有业务峰值.定时任务,外部服务依赖没有明显异常. 2.问题定位 服务502是nginx不能检测到后台健康server时抛出的提示,一般 ...

  5. MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...

    为什么80%的码农都做不了架构师?>>>    文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...

  6. JAVA 线上故障排查套路,从 CPU、磁盘、内存、网络到GC 一条龙!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数 ...

  7. JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:fredal https://fredal.xin/java ...

  8. JAVA 线上故障排查完整套路!牛掰!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源丨8rr.co/kV3R 线上故障主要会包括 CPU.磁盘.内 ...

  9. JAVA 线上故障排查指南!

    来源:https://fredal.xin/java-error-check 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依 ...

最新文章

  1. 洛谷 P1983 车站分级
  2. oracle vm 安装虚拟机小bug
  3. 初级测试开发面试题_初级开发人员在编写单元测试时常犯的错误
  4. bzoj2375 疯狂的涂色
  5. BZOJ2199 [Usaco2011 Jan]奶牛议会
  6. 12.混淆——介绍,傅里叶变换抽样对,采样和重建_1
  7. 贵大计算机考研情侣,贵大计算机研究生怎么样?
  8. 建立 CLR Stored Procedure/Function 的小範例
  9. 【网络流24题】魔术球
  10. 接口文档模板(Markdown)
  11. 一次学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
  12. IDEA 2017破解补丁方法
  13. centos7配置ntp服务器
  14. [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
  15. 视频教程-VR 游戏创业中的那些坑-其他
  16. 让阿里告诉你, iOS开发者为什么要学 Flutter !
  17. RIoTBoard开发板系列笔记(十二)—— gstreamer + vpu实现视频硬件解码播放
  18. 空调弱周期到了!海尔发力空气网,线上线下唯一双增长
  19. 惠州市有哪些学计算机的学校,惠州有哪些好学校?
  20. 0基础24岁女硕士生,想转行做月薪30k的测试开发,需要从什么开始学习?

热门文章

  1. C语言创建map,遍历map
  2. VTK:可视化之TextureMapPlane
  3. VTK:PolyData之PointLocator
  4. VTK:PolyData之ExtractSelection
  5. VTK:PolyData之CurvaturesDemo
  6. VTK:几何对象之TextActor
  7. OpenGL textures combined组合纹理的实例
  8. QT的QSplitterHandle类的使用
  9. java什么是对象如何创建对象_java对象的创建过程是什么
  10. Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法