故障排查:是什么 导致了客户端批量心跳超时掉线
心跳超时指的是:针对某个在线的客户端(TCP连接),ESFramework服务端在指定的时间内,没有收到来自该客户端的任何消息,则认为该客户端已经掉线。
为什么需要心跳机制了?因为针对某些客户端掉线(可能是因为网络断开、或客户端程序退出),服务端不能立即感受到(有的可能需要过很长的时间才能感受到),所以,需要引入心跳机制,让服务端尽可能早地发现客户端已经不在线了。关于心跳机制,更详细的介绍可以参见这里。
如果发生了很多客户端批量心跳超时掉线的情况,就说明服务端在过去的某段时间内,从未收到来自这些客户端的任何心跳消息。通常有3种可能性导致该情况发生:
1.CPU或内存使用率过高
在该情况发生时,观察一下服务端进程的CPU和内存是否有异常。
比如,当CPU持续在100%时,就有可能导致接收数据的操作被停止。
2.处理某些信息所花费的时间过长
如果服务端的信息处理模型设定的是IocpDirectly,那么依据IocpDirectly的原理,当处理某个信息所花费的时间超过了服务端设定的心跳超时的时间,服务端就会将对应的客户端误判为心跳超时掉线。
假设是该原因导致的心跳超时,则对应的解决方案有:
(1)找出那些处理非常耗时的信息,进行优化理,加快处理速度。
(2)将超时时间间隔设定位一个更大的值或关闭心跳检测。
(3)将信息处理修改为异步模式。
(4)将服务端信息处理模型修改为TaskQueue模式,这样就完全避免了由于信息处理时间过长导致误判的情况。
很显然,方案(1)是最好的也是根本性的解决方案。
3.服务器网络拓扑结构、防火墙、路由器、网络安全监控等相关软硬件
如果排除了前面的可能性(比如,即使改成了TaskQueue模式,批量掉线仍然发生),那么,几乎就只剩下一个可能:服务端在心跳超时时间间隔内未收到来自这些客户端的任何消息。很可能来自客户端的消息被防火墙、路由器、或某些网络完全监控的相关软硬件给挡住了。
此时,需要专业的运维人员或网管人员参与进来,协助排查问题,比如:
(1)在服务器上执行netstat命令,查看目标端口的相关状态信息。
(2)在服务器上执行抓包工具,监测目标端口上是否有数据从客户端过来。
(3)分析服务器的网络拓扑结构,并以服务器为中心,依次向外检查防火墙、路由器、网络安全监控等相关软硬件等的设定,并进行针对性的排查测试。
经过以上的排查分析,应该都可以找到问题的根源所在,如果还是没有结果,可以给我留言,我们一起讨论下啊。
故障排查:是什么 导致了客户端批量心跳超时掉线相关推荐
- mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查
mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查 Got fatal error 1236 from master when reading data from binar ...
- K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路
K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 文章目录 K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 1.Node节点资源不足可能会产生的故障 2.Node节点 ...
- 服务器系统导致无盘客户机usb失灵,无盘客户机无法启动/故障排查过程
下面的文章是我们客服中心的同事收集,郭有勇同学整理的,在此表示感谢. 1:原因:找不到引导分区 排查对象:配置.磁盘-镜像损毁-磁盘故障 2:原因:引导启动失败 排查对象:网络.配置.磁盘 -局域网多 ...
- mysql慢查询导致502_MySQL Statement cancellation timer故障排查分享
1.现象 10月26日晚22:07,X服务的线上机器502,期间没有业务峰值.定时任务,外部服务依赖没有明显异常. 2.问题定位 服务502是nginx不能检测到后台健康server时抛出的提示,一般 ...
- MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...
为什么80%的码农都做不了架构师?>>> 文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...
- JAVA 线上故障排查套路,从 CPU、磁盘、内存、网络到GC 一条龙!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数 ...
- JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:fredal https://fredal.xin/java ...
- JAVA 线上故障排查完整套路!牛掰!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源丨8rr.co/kV3R 线上故障主要会包括 CPU.磁盘.内 ...
- JAVA 线上故障排查指南!
来源:https://fredal.xin/java-error-check 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依 ...
最新文章
- 洛谷 P1983 车站分级
- oracle vm 安装虚拟机小bug
- 初级测试开发面试题_初级开发人员在编写单元测试时常犯的错误
- bzoj2375 疯狂的涂色
- BZOJ2199 [Usaco2011 Jan]奶牛议会
- 12.混淆——介绍,傅里叶变换抽样对,采样和重建_1
- 贵大计算机考研情侣,贵大计算机研究生怎么样?
- 建立 CLR Stored Procedure/Function 的小範例
- 【网络流24题】魔术球
- 接口文档模板(Markdown)
- 一次学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
- IDEA 2017破解补丁方法
- centos7配置ntp服务器
- [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
- 视频教程-VR 游戏创业中的那些坑-其他
- 让阿里告诉你, iOS开发者为什么要学 Flutter !
- RIoTBoard开发板系列笔记(十二)—— gstreamer + vpu实现视频硬件解码播放
- 空调弱周期到了!海尔发力空气网,线上线下唯一双增长
- 惠州市有哪些学计算机的学校,惠州有哪些好学校?
- 0基础24岁女硕士生,想转行做月薪30k的测试开发,需要从什么开始学习?