在做i性能压测之前,所了解的服务器配置:CPU、内存、硬盘、网络
一、查看cpu信息
常用命令:cat /proc/cpuinfo或者lscpu、pidstat等
- 需要关注的:
Architecture: x86_64 # 架构信息,表示系统的CPU架构为x86_64,即64位架构
CPU(s): 4 #逻辑cpu个数,表示系统中有4个CPU
Model name:Intel® Core™ i5-8500 CPU @ 3.00GHz # 型号名称,表示CPU的具体型号 - 查看cpu利用率可以使用pidstat、top、htop、vmstat、nmon等
pidstat命令查看进程级别的CPU利用率
pidstat -u:显示每个进程的CPU利用率
二、查看内存大小及使用率
常用命令: free、cat /proc/meminfo、top、htop等
选项 | 释义 |
---|---|
total | 总内存大小 |
usedl | 正在运行的进程当前正在使用的内存(used= total – free – buff/cache) |
free | 未使用的内存(free= total – used – buff/cache) |
shared | 多个进程共享的内存 |
buffers | 作系统保留的内存,在进程需要时分配为缓冲区 |
cached | 存储在 RAM 中最近使用的文件 |
buff/cache | Buffers + Cached |
available | 可用于启动新应用程序,无需交换的内存大小 |
- free -m:以 MB 为单位的输出.
- free -G:以 GB 为单位输出
- free -l:详细的低内存和高内存统计信息
- free -t:RAM + swap
- free -s:多少秒更新一次
- free -C:更新多少次
三、磁盘
常用命令:vmstat、df、du、lsblk、fdisk、smartctl等
- 显示指定磁盘分区统计信息:vmstat -d
- reads【 or writes】
- total:成功完成的总读取数
- merged:分组读取【或写入】(产生一个 I/O)
- sectors:扇区读取【或写入】成功
- ms:阅读【或写入】花费的毫秒数
- IO
- cur:正在进行的 I/O
- sec:I/O 花费的秒数
- df -h:是最常见的磁盘查看命令。它可以显示文件系统的总大小、已用空间、可用空间和挂载点等信息
Size:文件系统总大小,
Used:已使用大小,
Avail:可用空间linux启动盘制作工具,
Use%:表示已使用百分比
四、网络
常用命令:ifconfig、netstat -s、sar、iperf等
- ifconfig命令
errors 表示发生错误的数据包数,比如校验错误、帧同步错误等
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer(这个缓冲区是在内核内存中,更具体一点是在网卡驱动程序里),但因为系统内存不足等原因而发生的丢包
overruns 表示超限数据包数,即网络接收/发送速度过快,导致 Ring Buffer 中的数据包来不及处理,而导致的丢包
因为过多的数据包挤压在 Ring Buffer,这样 Ring Buffer 很容易就溢出了
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等
collisions 表示冲突、碰撞数据包数
-
sar命令
sar -n DEV,显示网口的统计数据;
sar -n EDEV,显示关于网络错误的统计数据;
sar -n TCP,显示 TCP 的统计数据
rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒
rxkB/s 和 txkB/s 分别是接收和发送的吞吐率,单位是 KB/ 秒
rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒 -
iperf命令
Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能, 可以报告带宽、延迟抖动和数据包丢
失。
安装方式:1. 如果使用yum install iperf -y命令出现很多[Errno 14] HTTP Error 404 - Not Found,除了更新安装数据源之外,还可以通过wget下载的方式,如下
wget https://downloads.es.net/pub/iperf/iperf-3.0.5.tar.gz
tar -zxvf iperf-3.0.5.tar.gz
cd iperf-3.0.5
./configure
make
make install
其他版本:ifperf各版本链接
- 共用的参数:
- -f [k|m|g|K|M|G] 指定带宽输出单位
- -p 指定服务器端使用端口或客户端连接端口
- -i 指定每次报告之前的时间间隔,单位为秒,默认为1
- -F 指定文件作为数据流进行带宽测试
- 服务端专有参数:
- -s 以服务器模式启动
- -D 将iperf作为后台守护进程运行
- 客户端专有参数:
- -c 以客户端模式运行
- -u 指定使用udp协议
- -b 指定udp模式使用的带宽
- -t 指定传输数据包的总时间
- -n [K|M|G] 指定传输数据包的字节数
- -I 指定读写缓冲区的长度。tcp模式默认为8KB,udp模式默认为1470B
- -P 指定客户端与服务端之前使用的线程数,默认是1。需要两端同时使用
- -R 切换发送、接收模式。默认客户端发送,服务端接收,设置此参数后,客户端变为接收,服务端为发送。
- -w 指定套接字缓冲区大小,在tcp模式下,此值是设置tcp窗口大小的。用来限制可以接受数据包的最大值
- -B 用来绑定一个主机地址或接口,这个参数仅用于具有放多个网卡的主机。在udp模式下,此参数用于绑
定和加入一个多播组 - -M 设置tcp最大信息段
- -N 设置tcp无延迟
测试tcp吞吐量:iperf3 -c ip地址
- 先启动服务器端窗口不要关闭(一直挂着)
- 复制一个窗口,执行命令:iperf3 -c ip地址
可以看到iperf3持续传输10s,传输的数据量是52.2GBytes,网卡带宽是44.8Gbits/sec
测试udp丢包和延迟:iperf3 -c ip地址 -u -b 100M -f M -i 2
- udp由于不提供可靠的数据传输服务,所以一般都只关注udp的丢包和延迟, 下面是在iperf客户端传输100MB的
udp数据包的输出结果
重点看server report信息
倒数第一列的425/15844 表示丢失的数据包和总得数据包数量。后面的2.7%表示平均丢包的比率
倒数第二列的0.005 ms表示传输延迟
五、进程
常用命令: top 、ps 、 pidstat 、 pstree等
- top命令
详解参考:上一篇博客
- 案例 1 : 找到 CPU 使用率最多的前5个进程:ps auxw --sort=-%cpu | head -6
- 案例 2 : 找到 内存 占用率最多的前5个进程:ps auxw --sort=-%mem | head -6
- pidstat命令
-u 默认的参数,显示各个进程的CPU使用统计
-r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况
-p 指定进程号
-w 显示每个进程的上下文切换情况
-t 显示选择任务的线程的统计信息外的额外信息
查看那个进程导致CPU使用率,pidstat命令,需要安装:yum install -y sysstat
命令1: pidstat -u 5 1 // 5秒内, 统计1次
命令2: pidstat -w -p 7090
UID: 用户ID
PID: 进程ID
%usr: 进程在用户空间占用CPU的百分比
%system: 进程在内核空间占用CPU的百分比
%guest: 任务花费在虚拟机上的CPU使用率(运行在
虚拟处理器)
%CPU: 任务总的CPU使用率
CPU: 正在运行这个任务的处理器编号
Command: 这个任务的命令名称
- pstree 命令
功能: 指定 pid 查找父进程
安装: yum -y install psmisc
命令: pstree -aps 进程号