背景:云南高新集群AmbariServer每天会异常挂掉
1、使用strace监控进程是自己退出的还是其它进程影响退出的
nohup strace -T -tt -e trace=all -p 21715 > ambari-server-trace.log &
发现进程是被kill的
2、使用auditctl继续监控进程情况
auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k test1
ausearch -k test1 | grep 47da (16进制的进程号)
发现操作只有15411进程和ambari server进行有交付
这个点ambari-server退出,操作进程为15411,为abrtd进程
ambari-agent.log 显示2-29号 03:40链接不上8440 8441端口
从trace日志看,也是2-29号 03:40被杀掉
解决:由于只有15411进程和ambari server进行有交付,所以停掉abrtd服务后观察。
service abrtd stop
观察几天后,AmbariServer正常运行。
trace命令:
nohup strace -T -tt -e trace=all -p 21715 > trace.log &监控该pid的情况,如果是被kill -9,会出现一个log,大致如下:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/webapp/xxx-server/
-XX:ErrorFile
-XX:ErrorFile=/var/log/ambari-server/ambari-serve_err.log
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/hive/hms_heapdump.hprof
nohup strace -T -tt -e trace=all -p 21715 > trace.log &
-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。
-e trace=file 跟踪和文件访问相关的调用(参数中有文件名)
-e trace=process 和进程管理相关的调用,比如fork/exec/exit_group
-e trace=network 和网络通信相关的调用,比如socket/sendto/connect
-e trace=signal 信号发送和处理相关,比如kill/sigaction
-e trace=desc 和文件描述符相关,比如write/read/select/epoll等
-e trace=ipc 进程见同学相关,比如shmget等