生产环境有个工程进程能起来(有pid),但是没有端口监听,工程日志没有明显报错,看不出原因。


想了下,有如下三种排查方法:
1 既然工程有问题,那么就应该抛错误,调节一下工程的日志级别到 debug
2 用jstack根据pid打印堆栈信息看
3 用strace跟踪pid,可以具体到函数调用
最终通过 jstack打印堆栈信息,有rabbitMQ 消息队列协议相关字眼,是rabbitmq内部出问题了(外面看不出),重启一下rabbitMQ ,再重启工程就可以了!
至于 rabbitMQ 为什么会有问题,需要结合 相关生产者、消费者具体看下来了。
参考
jstack问题定位分析
https://zhuanlan.zhihu.com/p/162927548
https://www.cnblogs.com/soft-engineer/p/15101913.html
Linux 使用strace命令查找进程卡死原因
https://mp.weixin.qq.com/s/nRZ8cEqaJeeEnQVDLrkIhg
Linux系统调用追踪工具strace
<
当生产环境中一个工程进程有pid但无端口监听,且日志无明显错误时,可以通过提升日志级别、使用jstack和strace进行排查。本文作者通过jstack发现进程与rabbitMQ相关,问题出在消息队列内部。重启rabbitMQ和工程后问题得到解决,但具体原因需进一步分析生产者和消费者。strace作为系统调用追踪工具,也是排查问题的有效手段。
最低0.47元/天 解锁文章
8101

被折叠的 条评论
为什么被折叠?



