(1)在Linux创建一个java循环类(方便测试),代码如下:
package com.study.gc; public class javaDemo02 { public static void main(String[] args) { while (true) { System.out.println(new java.util.Random().nextInt(77778888)); } } }
(2)由于带了包名,所以先编译
[root@spark2 demo]# javac -d . javaDemo02.java
(3)再次去查看,发现多了"com"的包名
[root@spark2 demo]# ll total 8 drwxr-xr-x. 3 root root 19 Aug 1 17:36 com -rw-r--r--. 1 root root 196 Aug 3 19:27 javaDemo02.java [root@spark2 demo]#
(4)运行程序
[root@spark2 demo]# java com.study.gc.javaDemo02
后台不断死循环打印
资源不存在后台打印,我们可以使用”top“命令,前台查看进程:查看系统的整机命令
[root@spark2 ~]# top top - 19:37:08 up 22 min, 2 users, load average: 0.13, 0.07, 0.09 //系统负载均衡 Tasks: 109 total, 2 running, 107 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.0 us, 5.0 sy, 0.0 ni, 93.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3861484 total, 2610840 free, 964692 used, 285952 buff/cache KiB Swap: 4063228 total, 4063228 free, 0 used. 2628116 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10185 root 20 0 2957456 46776 11764 S 6.3 1.2 0:29.01 java 10086 root 20 0 158768 5616 4268 R 1.0 0.1 0:04.06 sshd 10235 root 20 0 162116 2224 1544 R 0.7 0.1 0:00.07 top 1 root 20 0 127984 6540 4136 S 0.0 0.2 0:02.19 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.19 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:01.59 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 0:00.21 watchdog/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md 23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller 24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 watchdogd 30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0 31 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 32 root 39 19 0 0 0 S 0.0 0.0 0:05.96 khugepaged 33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto 41 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld 43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd 44 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kaluad 45 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 46 root 20 0 0 0 0 S 0.0 0.0 0:00.88 kworker/0:2 47 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ipv6_addrconf 60 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 deferwq
说明:
load average:0.13,0.07,0.09:系统负载均衡的负载值,若想求出负载值,这3个值相加除以3再乘100%,若求的是60%,系统值还是够的,没什么压力。
查看系统的整机命令:
[root@spark2 ~]# uptime 19:43:24 up 28 min, 2 users, load average: 0.26, 0.12, 0.0
查看额外
[root@spark2 ~]# vmstat -n 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 2610884 2108 283856 0 0 119 14 200 391 2 4 93 1 0 0 0 0 2610900 2108 283888 0 0 0 0 257 322 3 5 92 0 0 0 0 0 2610900 2108 283888 0 0 0 0 266 328 3 6 92 0 0 [root@spark2 ~]#查看vmstat
[root@spark2 ~]# ps -ef|grep java root 10185 10145 7 19:30 pts/0 00:01:32 java com.study.gc.javaDemo02 root 10245 10203 0 19:52 pts/1 00:00:00 grep --color=auto java [root@spark2 ~]# pidstat -u 1 -p 10185 -bash: pidstat: command not found //没有这个插件,下载即可 [root@spark2 ~]# yum install sysstat查看每个进程使用cpu的用量分解信息
内存:free
(1)应用程序可用内存数
[root@spark2 ~]# free total used free shared buff/cache available Mem: 3861484 969036 2473168 11860 419280 2619044 Swap: 4063228 0 4063228 [root@spark2 ~]# [root@spark2 ~]# free -g total used free shared buff/cache available Mem: 3 0 2 0 0 2 Swap: 3 0 3 [root@spark2 ~]# [root@spark2 ~]# free -m total used free shared buff/cache available Mem: 3770 946 2415 11 409 2557 Swap: 3967 0 3967 [root@spark2 ~]#应用程序可用内存数
(2)查看额外
pidstat -p 进程号 -r 采样间隔秒数
硬盘:df(查看磁盘剩余空闲数)
[root@spark2 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 36G 7.3G 28G 21% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 1014M 146M 869M 15% /boot tmpfs 378M 0 378M 0% /run/user/0 [root@spark2 ~]#
磁盘IO:iostat
(1)磁盘I/O性能评估
[root@spark2 ~]# iostat -xd 2 3 Linux 3.10.0-957.el7.x86_64 (spark2.x) 08/03/2020 _x86_64_ (1 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.07 1.91 0.44 78.54 16.63 81.28 0.03 12.06 13.87 4.13 5.25 1.23 scd0 0.00 0.00 0.00 0.00 0.25 0.00 114.22 0.00 2.00 2.00 0.00 1.61 0.00 dm-0 0.00 0.00 1.35 0.51 70.63 16.12 93.53 0.03 14.78 18.79 4.11 6.50 1.21 dm-1 0.00 0.00 0.02 0.00 0.60 0.00 54.67 0.00 0.32 0.32 0.00 0.19 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 [root@spark2 ~]#
(2)查看额外
pidstat -d 采样间隔秒数 -p 进程号
pidstat -d 2 -p 10185
网络IO:ifstat
(1)默认本地没有,下载ifstat
//下载 [root@spark2 ~]# wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz //解压 [root@spark2 ~]# tar -zxvf ifstat-1.1.tar.gz //进入解压文件目录及编译 [root@spark2 ifstat-1.1]# ./configure //编译下载 [root@spark2 ifstat-1.1]# make [root@spark2 ifstat-1.1]# make instal
(2)查看网络IO
[root@spark2 ifstat-1.1]# ifstat 1
(1)先用top命令找出CPU占比最高的
(2) ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序
[root@spark2 ifstat-1.1]# jps -l 11363 sun.tools.jps.Jps 10185 com.study.gc.javaDemo02 10171 -- process information unavailable [root@spark2 ifstat-1.1]# ps -ef |grep -v grep root 10185 10145 7 19:30 pts/0 00:05:24 java com.study.gc.javaDemo02
(3)定位到具体线程或者代码
ps -mp 进程 -o THREAD,tid,time
[root@spark2 ifstat-1.1]# ps -mp 10185 -o THREAD,tid,time USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME root 7.0 - - - - - - 00:05:40 root 0.0 19 - futex_ - - 10185 00:00:00 root 6.8 19 - - - - 10186 00:05:34 root 0.0 19 - futex_ - - 10187 00:00:01 root 0.0 19 - futex_ - - 10188 00:00:00 root 0.0 19 - futex_ - - 10189 00:00:00 root 0.0 19 - futex_ - - 10190 00:00:00 root 0.0 19 - futex_ - - 10191 00:00:00 root 0.0 19 - futex_ - - 10192 00:00:00 root 0.0 19 - futex_ - - 10193 00:00:00 root 0.0 19 - futex_ - - 10194 00:00:04 [root@spark2 ifstat-1.1]#
参数解释
-m 显示所有线程
-p pid进程使用cpu的时间
-o 该参数后是用户自定义格式
(4)将需要的线程ID转换为16进制格式(英文小写格式)
cmd窗口执行“calc”切换计算机“程序员”
(5)jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
[root@spark2 ifstat-1.1]# jstack 10185| grep 27C9 -A60原文连接:https://zhuanlan.zhihu.com/p/166394360