08-10 性能瓶颈证据链

Leofighting

内存

磁盘空间

[root@ZT-TEST ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 3.9G     0  3.9G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G  402M  3.6G   11% /run
tmpfs                    3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   95G   10G   86G   11% /
/dev/sda1               1014M  207M  808M   21% /boot
tmpfs                    799M   16K  799M    1% /run/user/42
tmpfs                    799M     0  799M    0% /run/user/0

运行内存

[root@ZT-TEST ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           0           2           0           4           6
Swap:             3           0           3
[root@ZT-TEST ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7982         880        2851         408        4250        6394
Swap:          4095           3        4092
[root@ZT-TEST ~]# free -k
              total        used        free      shared  buff/cache   available
Mem:        8174056      902304     2919436      417952     4352316     6547824
Swap:       4194300        3368     4190932

虚拟内存(swap)

[root@ZT-TEST ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0   3368 2919400   4204 4348128    0    0     0     1    0    0  0  0 100  0  0
 0  0   3368 2919252   4204 4348128    0    0     0     0  173  240  1  0 99  0  0
 0  0   3368 2919220   4204 4348128    0    0     0     0  139  219  1  0 99  0  0
 0  0   3368 2919220   4204 4348128    0    0     0     0  121  208  1  0 99  0  0

内存交换设置:

  • 查看 swappiness 比例:
[root@ZT-TEST ~]# cat /proc/sys/vm/swappiness
30
  • 临时修改 swappiness 比例:
sudo sysctl vm.swappiness=10
  • 永久修改 swappiness 比例:
vim /etc/sysctl.conf
  • 关闭 swap:swapoff -a
  • 开启 swap:swapon -a

瓶颈分析

命令: vmstat

[root@ZT-TEST ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0   3368 2919400   4204 4348128    0    0     0     1    0    0  0  0 100  0  0
 0  0   3368 2919252   4204 4348128    0    0     0     0  173  240  1  0 99  0  0
 0  0   3368 2919220   4204 4348128    0    0     0     0  139  219  1  0 99  0  0

其中关于 IO 的几个指标解释如下:

  • bi:读磁盘的速度,单位 KB/秒
  • bo:写磁盘的速度
  • wa:IO 的时间

瓶颈分析:

  1. wa 并不能反应磁盘的瓶颈,实际反应的是 CPU 的 IO 等待时间
  2. bi+bo 参考值为 1000,如果超过 1000,而且 wa 值比较大,表示系统磁盘 IO 存在瓶颈

命令: iostat

[root@ZT-TEST ~]# iostat -x -k -d 1
Linux 3.10.0-957.el7.x86_64 (ZT-TEST)   2021年10月03日  _x86_64_        (4 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.02    0.00    0.23     0.11     2.22    20.25     0.01   58.40    5.38   59.03  13.86   0.32
dm-0              0.00     0.00    0.00    0.24     0.11     2.21    18.71     0.01   57.77    5.58   58.32  13.01   0.32
dm-1              0.00     0.00    0.00    0.00     0.00     0.00    11.00     0.00    3.65    5.39    2.36   0.65   0.00

###
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块 (block) 的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rkB/s: 每秒读数据量 (kB 为单位)
wkB/s: 每秒写数据量 (kB 为单位)
avgrq-sz:平均每次 IO 操作的数据量 (扇区数为单位)
avgqu-sz: 是平均请求队列的长度。队列长度越短越好
await: 平均每次 IO 请求等待时间 (包括等待时间和处理时间,毫秒为单位)。一般地系统 IO 响应时间应该低于 5ms
svctm: 平均每次 IO 请求的处理时间 (毫秒为单位)
%util: 1 秒中有百分之多少的时间用于 I/O 操作。该参数表示了设备的繁忙程度

瓶颈分析:

  1. CPU 会拿出一部分时间来等待 IO(iowait)。如果磁盘的利用率已经满了(util%),即使 CPU 使用率不高,但是系统整体 QPS 已经上不去了,如果继续加大流量,会导致单次 iowait 持续增加(IO 请求都堵在队列里),从而使整体性能塌方
  2. 高 iowait 并不代表磁盘的瓶颈。唯一能说明磁盘是系统瓶颈的方法是很高的 svctm(IO 请求的处理时间),一般来说超过 20ms,就代表了不太正常的磁盘性能。只要大于 20ms,就必须考虑是否磁盘读写的次数太多,导致磁盘性能降低
  3. svctm 一般要小于 await。svctm 的大小和磁盘性能有关,请求过多也会导致 svctm 的增加。await 的大小一般取决于 svctm 以及 I/O 队列的长度。如果 svctm 接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用的响应时间变慢,如果响应时间超过了用户可以容许的范围,需要考虑更换更快的磁盘;调整内核 elevator 算法;优化应用;升级 CPU

浏览器层面

关注白屏时间/首屏时间

接口层面

  • 并发测试
  • 负载测试
  • SQL 层

服务端层面

阅读 131

Leo的测试之路_Fighting
转行测试,为自己拼搏一次

向测试开发工程师前进

66 声望
471 粉丝
0 条评论
你知道吗?

向测试开发工程师前进

66 声望
471 粉丝
文章目录
宣传栏