前言
今天来说一下在linux中的一些常用的监控查看调优命令 用来查看系统的CPU 内存 进程的运行情况和使用情况 一般我们的Java程序在Linux中出现运行缓慢 就可以来使用这几个命令来检查哦
下面就开始使用吧~
top
通过这个命令 我们可以查看到进程所消耗的CPU和内存量 从而定位到时拿一个进程的问题 以及我们的 load average 负载情况分析 就是CPU的负载情况 大小 分别代表了了系统 1 5 15 分钟的负载情况 如果 三个值相加除以3乘于百分之百大于百分之60就代表系统负载比较严重咯
下面是具体图示
vmstat
查看CPU和进程的这个命令
意思是 每两秒查看一次 共三次
vmstat -n 2 3
-
procs
- r
- 运行和等待的进程
- b
- 等待资源的进程数
- r
-
cpu
- us
- 用户进程消耗CPU百分比
- sy
- 内核进程消耗CPU百分比
us + sy 大于 百分之 80 的话 就是 CPU 压力大了
- us
pidstat
查看单个进程的详细情况
$ ps -ef | grep java
pid
$ pidstat -u 1 -p 5101
free
查看内存 以及 使用情况咯
free # 按字节
free -m # 按兆数
free -g # 按G
df
查看磁盘空间
df -h
iostat
iostat -xdk 2 3
rkb/s 每秒读取数据量KB
wkb/s 每秒写入数据量
svctm I/O 请求的平均服务时间 单位毫秒
await I/O 请求的平均等待时间 单位毫秒 值越小 性能越好
util 一秒中有百分几的时间用于操作 接近100%表示磁盘带宽跑满 需要进行优化
ifstat
查看网络IO
ifstat 1
如果没有安装记得安装哦
wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
tar xzvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make
make install
du -sh *
这个可以查看当前路径下的每一个目录的占用磁盘空间大小
非常方便 用于清理磁盘空间时使用
CPU 占用过高分析思路
通过上面的知识呢 来 总和分析一下 都是慢慢学习 慢慢积累 才能够进步 我们看下面的思路
- 先用top命令找出CPU占比最高的
- 在使用ps和jps进一步确定 查看什么类型的线程咯
- 定位到具体线程和代码
3.1. ps mp 进程ID -o THREAD,tid,time
3.2 参数解释:-m 显示所有线程 -p pid 进程使用 cpu 的时间 - 将线程id转换为16进制小写 可以使用计算器
- 使用具体指令 定位是哪一行代码出现的问题
jstack pid | grep 16进制ID号 -A60
打印前60行 找自己公司包的语句 看具体在哪一行
结语
好了 就到这里 了~~~~