Linux系统异常shell卡住,执行命令卡住问题排查
Linux系统异常sshshell卡住,执行命令卡住问题排查
问题现象
执行ssh远程登录机器,输入密码后终端卡住,ctrl+c才会出现shell终端。
执行ps aux当前用户进程,终端输出卡住,其他su root等常规命令也无法执行
排查问题
- 终端卡住,命令执行不了,排查思路都是cpu,磁盘io,内存,网络方面是否有异常,排查发现机器cpu占用一直在超负荷运行,当前机器为4核心,但是平均负载都在24以上。比较可疑的是beam.smp进程,实际top该beam.smp的cpu占用率不稳地。
- 换个思路排查ps aux输出一半卡在哪里,发现hang在了读取进程/proc/1239353/cmdline上面,查看1239353进程的信息,发现整好是beam.smp进程,此时判断大概是该进程原因。
strace ps aux
cat /proc/1239353/stat
- 查看当前进程系统调用栈,发现进程在io读取上面
cat /proc/123953/stack
- 123953是erlang的进程,机器上面部署了emqx,emqx底层依赖erlang,上emqx的管理面板发现emqx当前负载较高,出现队列满,丢弃了大量消息。
- 查询emqx官方文档发现消息的 Payload 越大,操作系统需要更多的软中断来接收和发送网络报文,EMQX 也需要花费更多的计算资源来序列化和反序列化消息,因此理论上最终的性能表现也会越差。发现当前emqx有业务在频繁发送GIS网格数据,体积都在100KB以上😕。
- 因为在开发环境,停用该业务账号权限,发现emqx恢复正常,机器负载也恢复正常,终端也不卡顿了。
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
编程之家!
喜欢就支持一下吧