日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查

發布時間:2024/7/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:小編總結了之前生產環境cpu 占用率過高等問題,小編功力不夠深厚,文章如有不對的地方,還望各位大神指正。

排查原因:客服反饋說系統訪問緩慢

一、 在排查問題的過程中針對 CPU 的問題, 使用以下命令組合來排查問題

模擬過程:

①示例代碼:

package com.sunxxx.task;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.scheduling.annotation.EnableScheduling;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

@Component

@EnableScheduling

public class JobTask {

Logger logger = LoggerFactory.getLogger(JobTask.class);

@Scheduled(cron = "0 0/2 * * * *")

public void task(){

try {

logger.info(Thread.currentThread().getName()+"開始執行業務代碼");

Integer sum = 0;

Thread.sleep(30000);

for (; ; ) {//死循環,模擬出CPU100%

}

// logger.info(Thread.currentThread().getName()+"執行任務結束:"+sum);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

②將項目打包,打包命令:

mvn clean package -Dmaven.test.skip=true

打包成功.png

③放到服務器上執行

java -jar xxx.jar

排查過程:

**① **查看問題進程, 得到進程 PID:

top -c

top -c.png

②查看進程里的線程明細, 并手動記下 CPU 異常的線程 PID:

top -p PID -H

top -p PID -H.png

③ 使用 jdk 提供 jstack 命令打印出項目堆棧:

jstack 3464 >3464.log

jstack.png

項目后臺打印出來的日志:

項目后臺日志.png

jatask命令得到的線程快照:

2020-03-21 13:06:17

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):

"DestroyJavaVM" #31 prio=5 os_prio=0 tid=0x00007f8828008800 nid=0xd76 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"http-nio-8089-Acceptor-0" #29 daemon prio=5 os_prio=0 tid=0x00007f88281ef000 nid=0xd96 runnable [0x00007f87ce3a9000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)

at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)

at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)

- locked <0x00000000fcc0f6e8> (a java.lang.Object)

at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:448)

at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:70)

at org.apache.tomcat.util.net.Acceptor.run(Acceptor.java:95)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-ClientPoller-1" #28 daemon prio=5 os_prio=0 tid=0x00007f8829052800 nid=0xd95 runnable [0x00007f87ce4aa000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

- locked <0x00000000fcdd1ed0> (a sun.nio.ch.Util$3)

- locked <0x00000000fcdd1ec0> (a java.util.Collections$UnmodifiableSet)

- locked <0x00000000fcdd1da8> (a sun.nio.ch.EPollSelectorImpl)

at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)

at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:744)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-ClientPoller-0" #27 daemon prio=5 os_prio=0 tid=0x00007f8829598800 nid=0xd94 runnable [0x00007f87ce5ab000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

- locked <0x00000000fcdd0540> (a sun.nio.ch.Util$3)

- locked <0x00000000fcdd0530> (a java.util.Collections$UnmodifiableSet)

- locked <0x00000000fcdd0418> (a sun.nio.ch.EPollSelectorImpl)

at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)

at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:744)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-10" #26 daemon prio=5 os_prio=0 tid=0x00007f8829594800 nid=0xd93 waiting on condition [0x00007f87ce8ac000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-9" #25 daemon prio=5 os_prio=0 tid=0x00007f8829592800 nid=0xd92 waiting on condition [0x00007f87ce9ad000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-8" #24 daemon prio=5 os_prio=0 tid=0x00007f882992d000 nid=0xd91 waiting on condition [0x00007f87ceaae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-7" #23 daemon prio=5 os_prio=0 tid=0x00007f882992b000 nid=0xd90 waiting on condition [0x00007f87cebaf000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-6" #22 daemon prio=5 os_prio=0 tid=0x00007f8829929000 nid=0xd8f waiting on condition [0x00007f87cecb0000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-5" #21 daemon prio=5 os_prio=0 tid=0x00007f8828b52000 nid=0xd8e waiting on condition [0x00007f87cedb1000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-4" #20 daemon prio=5 os_prio=0 tid=0x00007f8828b50000 nid=0xd8d waiting on condition [0x00007f87ceeb2000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-3" #19 daemon prio=5 os_prio=0 tid=0x00007f8828b4e000 nid=0xd8c waiting on condition [0x00007f87cefb3000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-2" #18 daemon prio=5 os_prio=0 tid=0x00007f8828b4c800 nid=0xd8b waiting on condition [0x00007f87cf0b4000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"http-nio-8089-exec-1" #17 daemon prio=5 os_prio=0 tid=0x00007f8828e08800 nid=0xd8a waiting on condition [0x00007f87cf1b5000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000fcc5daf0> (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.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)

at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"NioBlockingSelector.BlockPoller-1" #16 daemon prio=5 os_prio=0 tid=0x00007f8828e06800 nid=0xd89 runnable [0x00007f87cf2b6000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

- locked <0x00000000fcc11ad0> (a sun.nio.ch.Util$3)

- locked <0x00000000fcc11a48> (a java.util.Collections$UnmodifiableSet)

- locked <0x00000000fcc11680> (a sun.nio.ch.EPollSelectorImpl)

at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)

at org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:298)

"scheduling-1" #15 prio=5 os_prio=0 tid=0x00007f8829183800 nid=0xd88 runnable [0x00007f87cf3b6000]

java.lang.Thread.State: RUNNABLE

at com.suneee.task.JobTask.task(JobTask.java:20)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)

at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)

at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:93)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

"container-0" #13 prio=5 os_prio=0 tid=0x00007f88288bc800 nid=0xd87 waiting on condition [0x00007f88101b9000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.apache.catalina.core.StandardServer.await(StandardServer.java:573)

at org.springframework.boot.web.embedded.tomcat.TomcatWebServer$1.run(TomcatWebServer.java:181)

"Catalina-utility-1" #12 prio=1 os_prio=0 tid=0x00007f8828804000 nid=0xd86 waiting on condition [0x00007f8811fd4000]

java.lang.Thread.State: TIMED_WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000000d4760088> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)

at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)

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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

"Service Thread" #8 daemon prio=9 os_prio=0 tid=0x00007f8828198800 nid=0xd82 runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007f8828183800 nid=0xd81 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f8828181800 nid=0xd80 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f882817e800 nid=0xd7f waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f882817d000 nid=0xd7e waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f882814a000 nid=0xd7d in Object.wait() [0x00007f88126db000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000d3e6dac8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

- locked <0x00000000d3e6dac8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)

at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f8828145800 nid=0xd7c in Object.wait() [0x00007f88127dc000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000d3c78980> (a java.lang.ref.Reference$Lock)

at java.lang.Object.wait(Object.java:502)

at java.lang.ref.Reference.tryHandlePending(Reference.java:191)

- locked <0x00000000d3c78980> (a java.lang.ref.Reference$Lock)

at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"VM Thread" os_prio=0 tid=0x00007f882813d800 nid=0xd7b runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f882801d800 nid=0xd77 runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f882801f800 nid=0xd78 runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f8828021800 nid=0xd79 runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f8828023000 nid=0xd7a runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f88281a3800 nid=0xd83 waiting on condition

JNI global references: 1363

Heap

PSYoungGen total 232448K, used 208110K [0x00000000f1400000, 0x0000000100000000, 0x0000000100000000)

eden space 227328K, 89% used [0x00000000f1400000,0x00000000fdaa5ab8,0x00000000ff200000)

from space 5120K, 91% used [0x00000000ff200000,0x00000000ff696020,0x00000000ff700000)

to space 7680K, 0% used [0x00000000ff880000,0x00000000ff880000,0x0000000100000000)

ParOldGen total 38400K, used 16473K [0x00000000d3c00000, 0x00000000d6180000, 0x00000000f1400000)

object space 38400K, 42% used [0x00000000d3c00000,0x00000000d4c16750,0x00000000d6180000)

Metaspace used 50044K, capacity 52052K, committed 52352K, reserved 1095680K

class space used 6537K, capacity 6915K, committed 7040K, reserved 1048576K

④異常線程PID轉化成16進制數:

printf %x 3464

轉換16進制.png

使用notepad++查找線程的nid為d88的線程,定位代碼位置:

d88線程.png

第20行代碼.png

以上就是CUP100%問題排查過程。

二、 針對內存問題, 使用以下命令組合來排查問題:

①查看內存中的存活對象統計, 找出業務相關的類名:

jmap -histo:live PID > xxx.log

內存存活對象.png

業務相關的類名.png

②通過簡單的統計還是沒法定位問題的話, 就輸出內存明細來分析。 這個命令會將內

存里的所有信息都輸出, 輸出的文件大小和內存大小基本一致。 而且會導致應用暫時掛起,

所以謹慎使用。

jmap -dump:live,format=b,file=xxx.hprof PID

可以用jdk自帶的工具打開文件:

jvisualvm.exe.png

jmap.png

③最后對 dump 出來的文件進行分析。 文件大小不是很大的話, 使用 jdk 自帶的 jhat命令即可:

jhat -J-mx2G -port 7170

④dump 文件太大的話, 可以使用 jprofiler 工具來分析。

三、 需要分析 GC 情況, 可以使用以下命令:

jstat -gc PID

總結

以上是生活随笔為你收集整理的java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。