Linux进程掉线分析
1、trace进程无法捕捉到进程被kill掉,推测进程夯住自己退出。
nohup strace -T -tt -e trace=all -p 22658 > /datanode-trace.log &
2、通过aduit追踪,在日志/var/log/audit中grep进程id,发现进程掉之前很多XXX进程执行kill。
auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k test1
3、路由跟踪
traceroute -q 6 **
格式:route -n
格式:/sbin/route -n
用于打印路由表,加上-n参数就是在输出的信息中不打印主机名而直接打印ip地址。
1、进程号查看:
ps -ef | grep hiveserver2
2、进程资源使用:
top -p 26916
3、进程数:
pstree -p 23327 |wc -l
4、根据进程查看进程相关信息占用的内存情况:
pmap -x 26916 >> pmap.log
cat pmap.log | grep anon |awk ‘{sum+=$4}END{print sum}’
ps -ef | grep hiveserver2| grep -v grep |awk -F ’ ’ ‘{print $2}’ |xargs pmap -x |grep anon |awk ‘{sum+=$4}END{print sum}’
5、用jmap把进程内存使用情况dump到文件中:
jmap -dump:live,format=b,file=/tmp/dump.dat 21711 -------->进程id
6、用jhat分析查看:
jhat -port 10099 /tmp/dump.dat
运行在10099端口,然后浏览器访问
7、进程信息查看:
jstack -l PID >> 123.txt
分析locked回溯到哪个runableed的进程,加锁导致所有进程卡住。
在hs2日志里搜索 thread ID
8、本地文件查看:
cat /proc/pid/status
/proc/$PID/task 目录下的目录数判断线程数量
du -s -h /proc/26916/task// | grep mem
9、监控进程:
nohup strace -T -tt -e trace=all -p 22658 > /trace.log
10、查看占用cpu最高的进程:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
11、使用auditctl命令可以对内核中的审计系统进行控制:
auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k test1
在日志/var/log/audit中grep进程id。
12、任务hs2堆内存GC配置查看:
jmap -heap hs2进程号
查看整个JVM内存状态
jmap -heap [pid] 要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起
查看JVM堆中对象详细占用情况
jmap -histo [pid]
导出整个JVM 中内存信息
jmap -dump:format=b,file=文件名 [pid]
13、GC情况查看:
jstat -gcutil pid
jcmd 【pid】 VM.flags
14、定时打印一下GC 情况输出到文件里
jstat -gc 1800s
15、jvm参数查看
jinfo -flags