您的位置首页生活小窍门

cpuidle过高或过低

cpuidle过高或过低

cpuidle过高或过低回收到告警。工作中,机器cpuidle过高或过低,会收到告警。P2主机名:set-xr-xxxx监控项:all(#5)cpu.idle<30当前值:0,排查的步骤如下。1、使用top+大写P,查看cpu占用过高的进程这里往往就是后台java服务,要通过进程来排查具体的线程,这时有两种方法。top-H-p[pid],这时扮弊清可以看到该进程下的所有卜蚂线程,同样与大写P结合可以查看cpu占用过高的线程。2、ps-mp[pid]-oTHREAD,tid,time,此时也可以看到该进程下的所有线程,其中m代表列出该进程下的所有线程,p代表列出线程占用cpu的时间,o代表格式化输出。通过以上两种方法可以获取到线厅前程id,以下称为tid。3、将tid转为16进制,可以使用以下命令printf"%xn"[tid],得到的16进制线程id,同样称为tid。4、stack[pid]|greptid(16进制)-A60,从输出中排查公司相关的代码内容,找到问题代码的行数,进行排查,是fullgc导致的,可以进一步dumpjvm内存信息进行排查。5、jmap-dump:format=b,file=dump-all.hprof[pid]#dump全量内存数据,[pid]替换为上一步查找的进程id。6、jmap-dump:live,format=b,file=dump.hprof[pid]#再次dump存活对象内存数据,注意live参数会触发fullgc,本次dump一定要在上一步全量dump之后执行。7、使用eclipse的工具mat打开,进行排查。