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

1ebc56ecb76a

打包成功.png

③放到服务器上执行

java -jar xxx.jar

排查过程:

**① **查看问题进程, 得到进程 PID:

top -c

1ebc56ecb76a

top -c.png

②查看进程里的线程明细, 并手动记下 CPU 异常的线程 PID:

top -p PID -H

1ebc56ecb76a

top -p PID -H.png

③ 使用 jdk 提供 jstack 命令打印出项目堆栈:

jstack 3464 >3464.log

1ebc56ecb76a

jstack.png

项目后台打印出来的日志:

1ebc56ecb76a

项目后台日志.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

1ebc56ecb76a

转换16进制.png

使用notepad++查找线程的nid为d88的线程,定位代码位置:

1ebc56ecb76a

d88线程.png

1ebc56ecb76a

第20行代码.png

以上就是CUP100%问题排查过程。

二、 针对内存问题, 使用以下命令组合来排查问题:

①查看内存中的存活对象统计, 找出业务相关的类名:

jmap -histo:live PID > xxx.log

1ebc56ecb76a

内存存活对象.png

1ebc56ecb76a

业务相关的类名.png

②通过简单的统计还是没法定位问题的话, 就输出内存明细来分析。 这个命令会将内

存里的所有信息都输出, 输出的文件大小和内存大小基本一致。 而且会导致应用暂时挂起,

所以谨慎使用。

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

可以用jdk自带的工具打开文件:

1ebc56ecb76a

jvisualvm.exe.png

1ebc56ecb76a

jmap.png

③最后对 dump 出来的文件进行分析。 文件大小不是很大的话, 使用 jdk 自带的 jhat命令即可:

jhat -J-mx2G -port 7170

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

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

jstat -gc PID

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017 人工智能+内容生产研究报告【附下载】

来源&#xff1a;亿欧概要&#xff1a;技术进步和产业内生需求&#xff0c;是推动AI开始在内容生产领域应用的两个主要动力。为了弄清AI内容生产进行到何种程度&#xff0c;对内容生产可能产生何种影响&#xff0c;小编撰写了这份《2017 人工智能内容生产研究报告》&#xff0c…

ThreadLocal与Synchronized的用法

来源&#xff1a;http://blog.csdn.net/wl_ldy/article/details/5948779 一.ThreadLocal的用法 ThreadLocal的实现&#xff1a; package com.sodao.lucene; import java.util.Random; public class ThreadLocalTest implements Runnable{ ThreadLocal<Studen…

java程序员面试需要注意什么_Java程序员面试时要注意的一些问题

Java程序员面试的时候会面临各种五花八门的问题&#xff0c;你的第一反应、思维逻辑、思考方法&#xff0c;专业水平决定了企业对你的评价和你的薪资水准&#xff0c;但是除了专业以外还有一些你需要避免出现错误的注意事项&#xff0c;如果很好的避免了&#xff0c;就能帮你在…

“强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

李杉 编译自 KDnuggets量子位 出品 | 公众号 QbitAI地处加拿大埃德蒙顿的阿尔伯塔大学&#xff08;UAlberta&#xff09;可谓是强化学习重镇&#xff0c;这项技术的缔造者之一萨顿&#xff08;Rich Sutton&#xff09;在这里任教。△ 萨顿萨顿常被称为“强化学习之父”&#xf…

cmd中java编译命令是什么_cmd中java的编译命令——java和javac、javap

如题&#xff0c;首先我们在桌面&#xff0c;开始->运行->键入cmd 回车&#xff0c;进入windows命令行。进入如图所示的画面&#xff1a;可知&#xff0c;当前默认目录为C盘Users文件夹下的Administrator文件夹。一般而言&#xff0c;我们习惯改变当前目录。由于windows有…

Struts2源码阅读(一)_Struts2框架流程概述

1. Struts2架构图 请求首先通过Filter chain&#xff0c;Filter主要包括ActionContextCleanUp&#xff0c;它主要清理当前线程的ActionContext和Dispatcher&#xff1b;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。 ActionMapper取得了ActionMappi…

如何衡量机器与人类的智能关系,AI智商评测标准专家研讨会邀请

21世纪以来&#xff0c;人工智能领域陆续爆发很多重要事件。其中最吸引人们眼球的&#xff0c;当属2016年战胜了人类围棋冠军并开始能够从0自我学习的AlphaGo。10月26日&#xff0c;软银CEO孙正义在沙特阿拉伯举行的未来投资计划大会上称&#xff0c;未来30年内AI的智商&#x…

谷歌Jeff Dean团队发文,探讨「学习模型」如何替代传统索引结构

原文来源&#xff1a;arxiv-vanity作者&#xff1a;Tim Kraska、Alex Beutel、Ed H. Chi、Jeffrey Dean、Neoklis Polyzotis「雷克世界」编译&#xff1a;嗯~阿童木呀、多啦A亮、我是卡布达索引就是模型&#xff1a;B-Tree-Index可以看作是一个能够将一个键映射到排序数组中记录…

php html区别_php与html区别

php与html区别HTML是超文本标记语言&#xff1b;PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。HTML主要用在客户端的显示&#xff0c;比如我们浏览的网页&#xff0c;特别是静态网页&#xff0c;都…

Struts2源码阅读(三)_DispatcherConfigurationProvider

首先强调一下struts2的线程程安全&#xff0c;在Struts2中大量采用ThreadLocal线程局部变量的方法来保证线程的安全,像Dispatcher等都是通过ThreadLocal来保存变量值,使得每个线程都有自己独立的实例变量,互不相干. 接下来就从Dispatcher开始看起&#xff0c;先看其构造函数&a…

谷歌宣布在北京成立AI中国中心:李飞飞和李佳共同领导

来源&#xff1a;澎湃新闻概要&#xff1a;谷歌正式宣布谷歌AI中国中心&#xff08;Google AI China Center&#xff09;在北京成立。谷歌正式宣布谷歌AI中国中心&#xff08;Google AI China Center&#xff09;在北京成立。12月13日&#xff0c;在上海举行的谷歌开发者大会&a…

AI 与区块链:两大热门技术,会碰撞出什么样的火花?

来源&#xff1a;36氪概要&#xff1a;区块链和AI可以说是当今最热门的两个技术方向了。区块链和AI可以说是当今最热门的两个技术方向了。在一般人看来&#xff0c;这两大技术似乎没有什么交叉的地方&#xff0c;因为区块链和AI分别属于是技术谱系的两个极端&#xff1a;一个是…

伯克利人工智能研究院最新研究:协作型工业机器人如何更智能?

原文来源&#xff1a;BAIR作者&#xff1a;Changliu Liu、Masayoshi Tomizuka「雷克世界」编译&#xff1a;嗯~阿童木呀、我是卡布达在现代工厂中&#xff0c;工人和机器人是两大主要劳动力。出于安全考虑&#xff0c;这两者通常被限制在金属笼中的机器人分离开来&#xff0c;而…

Php如何过360拦截,PHP常见漏洞修复文件-360漏洞修复插件

主要对常见的漏洞进行拦截&#xff0c;如&#xff1a;SQL注入漏洞、检测POST数据、XSS漏洞防护等&#xff0c;效果非常不错&#xff0c;值得拥有。1、下载:360漏洞修复插件2、解压后&#xff0c;上传整个文件夹至服务器根目录3、if(is_file($_SERVER[DOCUMENT_ROOT]./360safe/3…

谷歌开源 TFGAN,让训练和评估 GAN 变得更加简单

作者&#xff1a;思颖概要&#xff1a;训练神经网络的时候&#xff0c;通常需要定义一个损失函数来告诉网络它离目标还有多远。三年前&#xff0c;蒙特利尔大学 Ian Goodfellow 等学者提出「生成式对抗网络」&#xff08;Generative Adversarial Networks&#xff0c;GANs&…

Struts2源码阅读(六)_ActionProxyActionInvocation

下面开始讲一下主菜ActionProxy了.在这之前最好先去了解一下动态Proxy的基本知识.ActionProxy是Action的一个代理类&#xff0c;也就是说Action的调用是通过ActionProxy实现的&#xff0c;其实就是调用了ActionProxy.execute()方法&#xff0c;而该方法又调用了ActionInvocatio…

py语言和php,php和python什么区别

python语言的风格Python在设计上坚持了清晰划一的风格&#xff0c;这使得Python成为一门易读、易维护&#xff0c;并且被大量用户所欢迎的、用途广泛的语言。设计者开发时总的指导思想是&#xff0c;对于一个特定的问题&#xff0c;只要有一种最好的方法来解决就好了。这在由Ti…

计算机产业深度报告:云计算与人工智能开启新一轮技术变革周期

来源&#xff1a;乐晴智库概要&#xff1a;每一次的技术迭代都将行业推向新的高度&#xff0c;同时也对产业生态和企业兴衰产生重大影响。纵观整个IT产业的发展史&#xff0c;从1960年代到现在的2010年代&#xff0c;科技行业历经了大型机时代、小型机时代、PC时代、互联网时代…

自动分页,返回时跳回指定页

实现原理&#xff1a; displaytag 自动分页时&#xff0c;只需要提供一个“集合”(name 属性) 和翻页对应的 requestURI 属性&#xff08;也是返回整体的集合&#xff09; 执行翻页时 displaytag 会自动计算出页数&#xff0c;形如&#xff1a; http://localhost:8080/bpp/ma…

java 界面艺术字,Java 在Word文档中添加艺术字

与普通文字相比&#xff0c;艺术字更加美观有趣也更具有辨识度&#xff0c;常见于一些设计精美的杂志或宣传海报中。我们在日常工作中编辑Word文档时&#xff0c;也可以通过添加艺术字体来凸显文章的重点,美化页面排版。这篇文章将介绍如何使用FreeSpire.Doc for Java在word文档…