# 简介

# 测试工具

根据行为的不同,可以将 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 越低,越有可能在通信过程中丢失数据包或出错。