# 简介
# 测试工具
根据行为的不同,可以将 Linux 的测试工具分为两类:
- 检查工具:检查系统的静态信息或动态信息。
- 系统的静态信息:比如磁盘容量、网卡带宽,一般只需查看一次。
- 系统的动态信息:比如磁盘读写速度、网卡收发速度,表示系统的运行状态,可能需要每秒检查一次。
- 测试工具:主动实施某种行为来测试系统。
- 比如模拟大量的网络请求,从而测试网络性能。
- 测试工具一般会运行一段时间,然后显示测试结果。也可以在运行测试工具时,用其它工具检查系统的动态信息。
# 测试思路
先用 top、vmstat、sar 等命令检查系统的宏观状态,再用其它工具检查系统的细节指标。
- 主要看性能指标的最大值、稳定性。
- 如果发现系统某方面异常,分析是某个进程导致的还是系统本身的问题。
- 除了使用测试工具,还要检查各种日志。
常见的测试项:
- CPU
- 空闲 CPU 是否足够、平均负载是否很大
- 进程
- 是否有僵尸进程。
- 内存
- 可用内存是否足够、是否使用了 swap 。
- 磁盘
- CPU 的 iowait 百分比是否一直很大、磁盘 IO 速度、iowait 时长
- 网络
- 用 ping 测试与某个主机的网络是否连通(前提是对方启用了 ICMP 协议)。
- 用 telnet 测试能否访问到某个主机的某个端口。
- 用 curl 测试能否访问到某个 HTTP 服务器。
- 用 sar -n DEV 查看本机网络端口的收发速率。
- 用 iperf 测试 TCP、UDP 的带宽。
- 用 ab、wrk、Jmeter 进行 HTTP 压测。
# 性能指标
# TCP/UDP
- 接收速度、发送速度
- 带宽 :网络的实际最大传输速率,由网卡硬件、网络链路决定。
- 吞吐量 :没有丢包时的最大传输速率。吞吐量/带宽就是该网络链路的实际使用率。
- 接收包速、发送包速
- pps :每秒收发的数据包数(packet per second),一般是指 TCP/UDP 包。 pps 主要受到网络带宽、从网卡到 CPU 收发网络包的速度影响。 采用最小的以太网帧(64 Bytes)、UDP 包(因为无需连接),可以测试出一个主机的最大收发 pps 。
- 丢包率
- 重传率:重新传输的数据包的百分比。
- 通信延迟
- 并发连接数
# 应用层
- 吞吐量(throughput)
- :服务器在单位时间内成功处理的请求数。
- 评价一个服务器的吞吐量时,通常需要测量它的 QPS、TPS 的最大值。
- QPS(Queries Per Second)
- :服务器平均每秒成功处理的请求数。
- TPS(Transactions Per Second)
- :服务器每秒成功处理的事务数。
- 例如用户在网站上执行一个操作时,可能需要调用服务器的多个 API 。此时 TPS 是统计用户操作的次数,而 QPS 是统计 API 被调用的次数。
- 并发数(concurrency)
- :服务器同时处理的请求数。
- 假设一个服务器同时最多处理 100 个查询请求,平均每个请求的响应时间为 100ms 。则并发数为 100 ,QPS 为 10000 。
- 响应时间
- :服务器处理每个请求时,要经过多久才返回 HTTP 响应给客户端。
- QoS(Quality of Service ,服务质量)
- 衡量服务质量的好坏时,需要综合考虑成功率、响应速度、并发量等指标。
- 比如通信线路的 QoS 越低,越有可能在通信过程中丢失数据包或出错。