# 简介

# 测试工具

根据行为的不同,可以将 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 压测。

# 性能指标

# 业务服务

  • QPS :每秒完成的查询数(Queries Per Second)
  • TPS :每秒完成的事务数(Transactions Per Second)
    • 例如用户向 Web 服务器发出一个请求,服务器后端可能查询多次,才返回响应结果给用户,但整个过程只算一个事务。
  • 并发数
  • QoS (Quality of Service ,服务质量)
    • 衡量服务质量的好坏时,需要综合考虑成功率、响应速度、并发量等指标。
    • 比如通信线路的 QoS 越低,越有可能在通信过程中丢失数据包或出错。

# TCP/UDP

  • 接收速度、发送速度
    • 带宽 :网络的实际最大传输速率,由网卡硬件、网络链路决定。
    • 吞吐量 :没有丢包时的最大传输速率。吞吐量/带宽就是该网络链路的实际使用率。
  • 接收包速、发送包速
    • pps :每秒收发的数据包数(packet per second),一般是指 TCP/UDP 包。 pps 主要受到网络带宽、从网卡到 CPU 收发网络包的速度影响。 采用最小的以太网帧(64 Bytes)、UDP 包(因为无需连接),可以测试出一个主机的最大收发 pps 。
    • 丢包率
    • 重传率:重新传输的数据包的百分比。
  • 通信延迟:指建立 TCP 连接的耗时,或一个数据包往返的耗时。
  • 并发连接数