推荐参考: https://my.oschina.net/zhangxufeng/blog/3017521
看哪个线程占用内存或者cpu高?
[root@zuo demo]# top -H -p 2823 top - 17:50:39 up 8 days, 4:37, 7 users, load average: 0.04, 0.04, 0.09 Threads: 101 total, 0 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st KiB Mem : 14203320 total, 355044 free, 12963976 used, 884300 buff/cache KiB Swap: 0 total, 0 free, 0 used. 917336 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5187 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.04 java 5191 root 20 0 5462568 1.934g 14652 S 0.0 14.3 2:44.18 java 5192 root 20 0 5462568 1.934g 14652 S 0.0 14.3 1:06.53 java 5193 root 20 0 5462568 1.934g 14652 S 0.0 14.3 1:06.70 java 5194 root 20 0 5462568 1.934g 14652 S 0.0 14.3 1:06.32 java 5195 root 20 0 5462568 1.934g 14652 S 0.0 14.3 1:06.41 java 5202 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:07.31 java 5203 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.03 java 5204 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.25 java 5205 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.00 java 5206 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.00 java 5207 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:00.00 java 5208 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:53.65 java 5209 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:51.13 java 5210 root 20 0 5462568 1.934g 14652 S 0.0 14.3 0:14.52 java
看看有没死锁信息;
找找cpu或内存高的进程在做什么?
[root@zuo demo]# jstack 2823 > bbb.txt [root@zuo demo]# more bbb.txt 2020-07-01 17:53:01 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode): "Attach Listener" #155 daemon prio=9 os_prio=0 tid=0x00007fd600209000 nid=0x184d waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "RMI TCP Connection(24)-192.168.18.135" #153 daemon prio=5 os_prio=0 tid=0x00007fd5ec013800 nid=0x17fe runnable [0x00007fd5a16e0000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) - locked <0x00000000a79d1e20> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:83) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$240/1511977249.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 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) "RMI TCP Connection(20)-192.168.18.135" #151 daemon prio=5 os_prio=0 tid=0x00007fd5ec011000 nid=0x17fa runnable [0x00007fd5a1fe7000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:171) at java.net.SocketInputStream.read(SocketInputStream.java:141) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) - locked <0x00000000a79d63d8> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:83) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)该命令是查看进程2823下所有线程此刻的运行信息,但是线程号nid是16进制的,需要通过linux命令进行转换,看占用资源高的进行具体是在运行什么
printf %x 十六进制数 --> 输出十进制
printf %d 十进制数 --> 输出十六进制