一. Linux命令之top
①. 整机:top,查看整机系统新能
主要看load average, CPU, MEN三部分
②. uptime:系统性能命令的精简版
二. Linux之cpu查看vmstat
①. vmstat
命令格式:vmstat -n 2 3
②. procs属性
- r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大
- b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
③. cpu属性
- us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
- sy:内核进程消耗的CPU时间百分比
- us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高
- id:处于空闲的CPU百分比
- wa:系统等待IO的CPU时间百分比
- st:来自于一个虚拟机偷取的CPU时间比
三. Linux之cpu查看pidstat
①. mpstat -P ALL 2
②. pidstat -u 1 -p 进程编号
- 每个进程使用cpu的用量分解信息
四. Linux之内存查看free和pidstat
①. free 应用程序可用内存数
-
应用程序可用内存l系统物理内存>70%内存充足 -
应用程序可用内存/系统物理内存<20%内存不足,需要增加内存 -
20%<应用程序可用内存/系统物理内存<70%内存基本够用
free -m:以MB为单位,查看物理内存
free -h:以人类能看懂的方式查看物理内存
free -g:以GB为单位,查看物理内存
②. pidstat -p 进程号 -r 采样间隔秒数
五. Linux之硬盘查看df
六. Linux之磁盘IO查看iostat和pidstat
①. 硬盘IO:iostat
- 系统慢有两种原因引起的,一个是CPU高,一个是大量IO操作
磁盘块设备分布:
-
rkB /s:每秒读取数据量kB; -
wkB/s:每秒写入数据量kB; -
svctm I/O:请求的平均服务时间,单位毫秒 -
await I/O:请求的平均等待时间,单位毫秒,值越小,性能越好 -
util:一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘; -
rkB/s,wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。 -
svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘
②. 网络IO:ifstat
七. CPU占用过高的定位分析思路(重点)
①. 先用top命令找出CPU占比最高的
②. ps -ef或者jps进一步定位 确定某个程序
③.定位到具体线程或者代码 ps -mp 进程 -o THREAD,tid,time
-
-m 显示所有的线程
- -p pid进程使用cpu的时间
- -o 该参数后是用户自定义格式
④. 将需要的线程ID转换为16进制格式(英文小写格式)
root 26.3 19 - n_tty_ - - 3339 00:01:31
⑤. jstack 进程ID | grep tid(16进制线程ID小写英文)-A60
|