1、top命令查看CPU使用率高的进程
1)load average系统平均负载:在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。从左到右:1,5,15分钟内的平均进程数。
数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
2)09:43:22 当前系统运行时间
3)
up 系统运行时间为91天
4)users 当前登录用户数3
5)Tasks:201 total, 当前进程总数
6)3 running 正在运行的进程数
7)198 sleeping 睡眠的进程数
8)0 stop 停止的进程数
9)0zombie 僵尸进程数
10) Cpu(s): 0.0%us, 用户空间占用CPU百分比
11) 100.0%sy, 内核空间占用CPU百分比
0.0%ni, 用户进程空间内改变过优先级的进程占用CPU百分比
0.0%id 空闲CPU
0.0%wa 等待输入输出的CPU时间百分比
0.0%hi 硬中断
0.0%si 软中断
0.0%st 实时
备注:(英文解释)
us: is meaning of "user CPU time"
sy: is meaning of "system CPU time"
ni: is meaning of" nice CPU time"
id: is meaning of "idle"
wa: is meaning of "iowait"
hi:is meaning of "hardware irq"
si : is meaning of "software irq"
st : is meaning of "steal time
12) Mem 8007024 total, (8G) 内存总容量
136924 free, (0.1G) 空闲内存总量
4280872 used, (4G)使用的物理内存总量
3589228 buffers, (3G) 用做内核缓存的内存量
13)Swap 4194300 total (4G) 交换分区总量
3081596 free (3G) 空闲的交换分区总量
1112704 used (1G) 使用的交换分区总量
每个进程的RES或者%MEM:
RES=%MEM*物理内存大小
RES=8.5%*16GB=1.36GB
VIRT指的是虚拟内存,RES指的是实际内存
如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
正在运行的进程 + 准备好等待运行的进程 在特定时间内(1分钟,5分钟,10分钟)的平均进程数。
一般来讲我们观察五分钟或者十五分钟的平均数值。坦白讲,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的。 但是如果十五
分钟的数值仍然保持在 1.00,那么就值得注意了要考虑是否这应该增加的处理器数量
了
负荷 1.00 说明系统已经没有剩余的资源了。在实际情况中 ,有
经验的系统管理员都会将这条线划在 0.70:
“需要进行调查法则”: 如果长期你的系统负载在 0.70 上下,那么你需要在事情变得更糟糕之
前,花些时间了解其原因。
“现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决
这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。

2、top -H -p 20589 查看进程内各个线程占用的CPU百分比
3、查看线程的十六进制,方便堆栈中查找:printf "%x" pid

监控java线程数:
ps -eLf | grep java | wc -l
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
netstat -n | grep tcp | grep 侦听端口 | wc -l
jstack pid>xxx.txt


3、查看io信息
iostat 查看磁盘负载iostat, iostat -x 1 2 意思是刷屏信息显示2次,时间间隔为1秒
1.rrqm/s:每秒进行merge(合并)的读操作数目
2.wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
3.r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
4.w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
5.rsec/s: 每秒读扇区数。即 delta(rsect)/s
6.wsec/s: 每秒写扇区数。即 delta(wsect)/s
9.avgrq-sz:平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
11avgqu-sz:平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
12.await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
13.svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
14.%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即
delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
%idle(空闲)小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时
IO压力高)
