一次websocket服务故障复盘
故障现象 先收到报警通知,然后运营反馈问题, websocket服务掉线用户大于2k 排查过程 集群整体负载正常 https://arms.console.aliyun.com/apm?pid=fl0zuy81v2%40f9d1ca21c1bad6a®ionId=cn-shanghai#/callChain/ea1ae6018c16637637393566236d0001/1663763439356/1663764039356/fl0zuy81v2@f9d1ca21c1bad6a?&page=apps 9-21 21:09:39 mongodb? 9-21 21:10:20 因为健康检查超时是3秒,但是这个请求3.6秒了,我看是检查mongodb的时候慢了,我再看看mongo怎么了 9-21 21:14:29 当时mongo CPU100%了 我分析了精确的监控,mongo从20:35:30到20:35:40 短短10秒钟时间 CPU从40%到100%,不知道发生了什么 比较异常的是这几个指标 从日志的先后来看,不是健康检查通不过才掉线的,是先掉线,后健康检查不通过的 20:35:35 battle-websocket开始出现大量掉线日志 20:35:35-20:35:40 mongo读写队列从平常的0飙升到117 20:35:40 mongodb cpu100% 20:35:42 健康检查超时,是20:35:38左右开始发出检查,42时超时,因为mongodb cpu100%,检查mongo用时3.6秒 websocket实例在这期间没有发生full gc 沈文俊 9-21 21:53:14 mongocpu上去还是因为大量重练的ws连接吧 9-21 21:55:10 对 从表现上来是这样 所以问题来到了为什么这个websocket实例会突然大量用户掉线,我看过没有异常gc,且掉线用户都来自同一个实例 9-21 21:58:27 没有什么错误日志 and topic: battle-websocket and tag:client_ip: “106.14.32.124” and error 那台容器的节点服务器 网络上会不会有什么问题? https://cs.console.aliyun.com/?spm=5176.12818093.ProductAndResource--ali--widget-product-recent.dre0.3be916d09xleyZ#/next/clusters/c5ee2ef6132674f438dfca921ee9345b5/eventcenter?ns=kube-system 从k8s事件来看,发生了reload,但是时间对不上 跟运维确认,昨晚没有进行运维操作,但是集群确认有nginx reload操作,现在知道的是如果认为执行nginx reload操作,针对http服务没有什么大的影响,但是tcp长连接服务是会掉线的 ...