中间件应用进程“死掉”问题

经常听到项目组反馈说当前的应用“死了”,让运维工程师查看下是什么情况。这里我们来讨论下在中间件部署应用程序后,运行过程中应用“死掉”都有哪些原因。

  1. 问题现象

通常遇到这类问题时候,应用程序表现为没有反应,或者崩溃,或者进程直接消失。这类都会被客户或者项目组判定为“进程死掉”。

  1. 可能造成的原因

(1)一个是进程就是正常停止的。查看日志,发现进程停止过程正常。这时候往往可能是有权限的人执行了停止脚本,或者杀进程命令。建议查看后台操作记录,查看具体操作员的IP地址和执行命令,到安全组或者桌面组查看该IP的归属。如果操作系统有配置的话,操作记录默认在/var/log/histlog/下的log文件中。

(2)系统太慢。进程还是在活动中,但是由于某些原因进程处理请求非常的慢,是一种“假死”。这种假死的后果可能会变成真死,也可能会“活过来”,这要看当前阻塞的请求是否处理完毕,或者是占用的资源被释放了。后面我会单独写一下慢的问题。

(3)当前进程不是通过nohup或者后台形式启动的,等ssh或者telnent断开后,进程就停止了。

(4)应用程序逻辑中存在危险代码,类似System.exit(0)。一旦调用到就会导致进程退出。这时候要关注日志中存在的异常报错,并需要项目组配合清查代码逻辑,或者尝试在中间件中加上启动参数,禁止执行System.exit代码,这个要具体看不同中间件的配置。

(5)进程就是直接崩溃了。案发现场没有留有当前假死的进程,只在启动文件的同级目录下留下了一个hs文件。究其原因只能具体看下这个hs文件都记录了什么,后面会单独引用一篇文章来讲如何查看hs文件。

3 总结

以上是最常见的几个进程“死掉”的原因。上面提到的一些要点我会单独开一篇记录来说,如有补充欢迎评论给我哈

猜你喜欢

转载自juejin.im/post/7017695063073357832