1)整机:top

 查看cpu和内存

系统的负载均衡(三个值:5分钟,10分钟,15分钟对应的负载值),(三个值相加的和)/3*100%,如果大于60%,则表示系统的压力重。

uptime 查看系统性能的精简版

2)查看cpu:vmstat

查看但不限于cpu

vmstat -n 2 3

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔,单位是秒,第二个参数是采样的次数。

结果分析:

procs

  • r:运行和等待cpu时间片的进程数,原则上1核的cpu的运行队列不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大。
  • b:等待资源的进程数,比如正在等待磁盘I/O,网络I/O等。

cpu

  • us:用户进程消耗cpu时间百分比,us值高,用户进程消耗cpu时间多,如果长期大于50%,优化程序。
  • sy:内核进程消耗的cpu时间百分比。
  • id:处于空闲的cpu百分比
  • wa:系统等待IO的cpu时间百分比
  • st:来自于一个虚拟机偷取的cpu时间的百分比

us+sy参考值为80%,如果大于80%,说明可能存在cpu不足。

查看所有cpu核信息:mpstat -P ALL 2(每2秒打印一次,打印所有cpu的进程消耗数)

 查看每个进程使用spu的用量分解信息:pidstat -u 1 -p 进程编号

3)内存:free

 free查看内存(单位字节),free -g查看内存(单位是g),free -m查看内存(单位是m)

  • 应用程序可用内存/系统物理内存>70% 内存充足
  • 应用程序可用内存/系统物理内存<20% 内存不足,需要增加内存
  • 20%<应用程序可用内存/系统物理内存<70% 内存基本可用

pidstat -p 进程号 -r 采样间隔秒数

4)硬盘:df

查看磁盘剩余空间数

5)磁盘IO:iostat

磁盘I/O性能评估

 磁盘块设备分布

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系列等待太长,需要优化程序或更换更快磁盘。

pidstat -d 采样间隔秒数 -p 进程号

6)网络IO:ifstat

没有该命令需要先安装

查看网络IO ifstat 1

各个网卡的in,out

观察网络负载情况

程序网络读写是否正常

解决:程序网络I/O优化;增加网络I/O带宽

cpu占用过高,分析和定位的步骤:

  1. 先用top命令找出cpu占比最高的
  2. ps -ef或者jps进一步定位,得知是什么后台程序运行
  3. 定位到具体线程或者代码。ps -mp 进程 -o THREAD,tid,time(参数说明:-m 显示所有的线程;-p pid进程使用cpu的时间;-o 该参数后是用户自定义的格式 )
  4. 将需要的线程ID转换为16进制格式(英文小写格式)。(printf "%x\n" 有问题的线程ID)
  5. jstack进程ID | grep tid(16进制线程ID小写英文)  -A60(jstack 进程ID |   grep tid(16进制线程ID小写英文)  -A60)

 

 posted on 2020-12-14 19:53  会飞的金鱼  阅读(409)  评论(0)    收藏  举报