서버 CPU의 과부하, 문제 파악 방법

2327 단어 지식 축적
CPU 부하가 너무 높아 문제를 해결하는 과정: 1. top 명령에 따라 PID가 12433인 Java 프로세스가 CPU의 300%를 차지하고 고장이 발생한 것을 발견합니다.
2, 이 프로세스를 찾은 후 구체적인 스레드나 코드를 어떻게 찾습니까? 먼저 스레드 목록을 표시하고 CPU가 차지하는 높은 스레드에 따라 정렬합니다. [root@localhost logs]# ps -mp  12433 -o THREAD,tid,time | sort -rn
결과는 다음과 같습니다. USER%CPU PRI SCNT WCHAN USER SYSTEM TID TIME root 10.5 19--- 1626 00:12:48 root 10.1 19--- 3293 00:12:16
가장 오래 걸리는 스레드 1626을 찾았습니다. CPU 사용 시간이 12분입니다!
혹은
2. top-hppid(shift+p는 cpu로, shift+m는 메모리로 정렬) top-hp8958을 사용하여 이 프로세스 아래의 모든 라인을 가져오고%CPU를 통해 가장 소모되는 CPU를 찾는 것은 라인 PID
 
필요한 스레드 ID를 16진수로 변환합니다. [root@localhost logs]# printf "%x"1626 e18
마지막으로 라인의 창고 정보를 인쇄합니다: 실행 중입니다jstack -l [PID] > /tmp/output.txt 그 다음에 맞을 수 있어요/tmp/output.txt 분석
현재 dump 시간 및 JVM 기본 정보 시작
2019-06-12 16:13:06
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode):

다음은 프로그램의 스레드 정보입니다.
"JetCacheHeavyIOExecutor3" #85 daemon prio=5 os_prio=0 tid=0x00007f76a93ab800 nid=0x1c47a waiting on condition [0x00007f7696acb000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000c9863140> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
	- None

출력된 정보를 일치시키면 문제가 있는 코드를 찾을 수 있다.
 
기타 기사 참조: JVM에서 CPU를 가장 많이 사용하는 스레드 찾기https://blog.csdn.net/notsaltedfish/article/details/80209538
top와 jstack을 결합하여 cpu에서 가장 높은 창고 정보를 찾다https://blog.csdn.net/u012448083/article/details/76855340

좋은 웹페이지 즐겨찾기