关于性能测试:0810-性能瓶颈证据链

34次阅读

共计 2594 个字符,预计需要花费 7 分钟才能阅读完成。

内存

磁盘空间

[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 层

服务端层面

正文完
 0