JAVA程序导致CPU高原因排查
公司的一个应用系统在某一个时间,突然CPU占比很高,网络,负载等都很高,应用系统是做集群的,当流量有负载均衡,但是其中一台CPU还是降低不了。
Zabbix监控,从监控图可以很明细看出CPU,网络,负载等异常。
系统top命令查看top查看哪个java进程ID占用CPU高topHpjavapid查看线程占用情况
从topHp可以看出有几个线程占用CPU很高,并且时间很长,一直没有释放
将线程PID转16进制
如17827printfx17827十六进制45a3jstack45a3
将相关异常信息提交给开发分析即可。
主进程日志(一般是通过主进程的子进程进行排查):resin60936093daemonprio5osprio0tid0x00007f61bc34c000nid0x633cwaitingoncondition〔0x00007f6186cfd000〕java。lang。Thread。State:WAITING(parking)atsun。misc。Unsafe。park(NativeMethod)atjava。util。concurrent。locks。LockSupport。park(LockSupport。java:304)atcom。caucho。env。thread2。ResinThread2。park(ResinThread2。java:196)atcom。caucho。env。thread2。ResinThread2。runTasks(ResinThread2。java:147)atcom。caucho。env。thread2。ResinThread2。run(ResinThread2。java:118)DependencyCheckWorker〔〕175910daemonprio5osprio0tid0x00007f61bc31c800nid0x62c9runnable〔0x00007f613f5fa000〕java。lang。Thread。State:RUNNABLEatjava。lang。ClassLoader。findLoadedClass0(NativeMethod)atjava。lang。ClassLoader。findLoadedClass(ClassLoader。java:1038)atcom。caucho。loader。DynamicClassLoader。loadClassImpl(DynamicClassLoader。java:1588)atcom。caucho。loader。DynamicClassLoader。loadClassImpl(DynamicClassLoader。java:1617)atcom。caucho。loader。DynamicClassLoader。loadClassImpl(DynamicClassLoader。java:1617)atcom。caucho。loader。DynamicClassLoader。loadClass(DynamicClassLoader。java:1548)atcom。caucho。loader。DynamicClassLoader。loadClass(DynamicClassLoader。java:1529)atcom。caucho。vfs。Depend。isModified(Depend。java)atcom。caucho。loader。ClassEntry。isModified(ClassEntry。java:214)atcom。caucho。make。DependencyContainer。checkImpl(DependencyContainer。java:298)atcom。caucho。make。DependencyContainer。access100(DependencyContainer。java:47)atcom。caucho。make。DependencyContainerDependencyCheckWorker。runTask(DependencyContainer。java:374)atcom。caucho。env。thread2。AbstractTaskWorker2。run(AbstractTaskWorker2。java:247)atcom。caucho。env。thread2。ResinThread2。runTasks(ResinThread2。java:173)atcom。caucho。env。thread2。ResinThread2。run(ResinThread2。java:118)resin59095909daemonprio5osprio0tid0x00007f61bc30d000nid0x62c8runnable〔0x00007f613fafb000〕java。lang。Thread。State:WAITING(parking)atsun。misc。Unsafe。park(NativeMethod)atjava。util。concurrent。locks。LockSupport。park(LockSupport。java:304)atcom。caucho。env。thread2。ResinThread2。park(ResinThread2。java:196)atcom。caucho。env。thread2。ResinThread2。runTasks(ResinThread2。java:147)atcom。caucho。env。thread2。ResinThread2。run(ResinThread2。java:118)resin59085908daemonprio5osprio0tid0x00007f61bc340000nid0x62c7waitingoncondition〔0x00007f61496c4000〕java。lang。Thread。State:WAITING(parking)atsun。misc。Unsafe。park(NativeMethod)atjava。util。concurrent。locks。LockSupport。park(LockSupport。java:304)atcom。caucho。env。thread2。ResinThread2。park(ResinThread2。java:196)atcom。caucho。env。thread2。ResinThread2。runTasks(ResinThread2。java:147)atcom。caucho。env。thread2。ResinThread2。run(ResinThread2。java:118)resin59075907daemonprio5osprio0tid0x00007f61bc35b800nid0x62c6waitingoncondition〔0x00007f613fcfd000〕java。lang。Thread。State:WAITING(parking)atsun。misc。Unsafe。park(NativeMethod)atjava。util。concurrent。locks。LockSupport。park(LockSupport。java:304)atcom。caucho。env。thread2。ResinThread2。park(ResinThread2。java:196)atcom。caucho。env。thread2。ResinThread2。runTasks(ResinThread2。java:147)atcom。caucho。env。thread2。ResinThread2。run(ResinThread2。java:118)