Linux网络之并发压力测试工具分析

压测常用的性能指标

  • 每秒处理事务(TPS,Transaction Per Second)每秒系统处理事务(通过、失败以及停止)的数量。通过它可以确定系统在任何给定时刻的时间事务负载。
  • 每秒查询率(QPS,Queries Per Second)一台服务器每秒能够响应的查询次数。通过它可以确定系统的最大吞吐能力。
  • 并发用户数(Number of Concurrent Users)同一时间点请求服务器的用户数。
  • 最佳并发用户数(The Optimum Number of Concurrent Users)随着并发量的增加,吞吐量(每秒处理事务)不再相应增加,并且响应时间继续增长。
  • 事务平均响应时间(Average Transaction Response Time) 每一事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
  • 最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)的最大时间。
  • 最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响应)的最少时间。
  • 90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第90%的响应时间。
  • CPU(CentralProcessing Unit) 中央处理器,是计算机的重要设备之一。功能主要是解释计算机指令以及处理计算机软件中的数据。
  • CPU利用率(CPU Usage) CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间
  • CPU总的执行时间。
  • 内存(Memory) 也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
  • 内存使用率(Memory usage) 内存占用率指的是此进程所开销的内存。
  • 磁盘IO(Disk input/ output) 磁盘的读写包速率。
  • 网卡负载(Network Load) 网卡的进出带宽,包量。

测试工具资源占用消耗:

  1. CPU :
  2. 内存:
  3. 并发量:

各种压测工具

  1. apache-jmeter-5.4.1_src.zip

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    采样器: 录制请求,生成请求
    断言
    监听器可放在线程组内,也可放在外面
    线程组: 线程数(多个),循环次数
    线程组:可以配置多个
    支持master-slave模式

    测试任务:可以配置多个不同的线程组
    线程组: 可以配置不通线程数*循环次数, 测试不同的请求
    请求: 配置断言和超时时间
  2. ab: httpd-2.4.51.tar.bz2

    1
    它的扩展性比较低,用来测试post get接口请求非常便捷,但只能提供基本性能指标,没有图形化结果,无法监控
  3. jemter/ab 多线程,阻塞IO

    1
    并发量可以通过线程数增加,线程之间隔离较好,但线程数过多,切换消耗会变大,效果变差
  4. httperf-master.zip

    1
    撸代码
  5. wrk: http测试,c/lua

    1
    少量线程: 异步IO,发包时阻塞,收包非阻塞。 这个工具代码相对比较清晰。
  6. siege-master.zip 多线程,类似ab

    1
    模拟n个用户不停地访问某个URL的场景
  7. http_load-09Mar2016.tar.gz

    1
    单进程复用, 最多3千连接
  8. webbench: 多进程 fork出子进程进行测试

    1
    最多3万连接
  9. vegeta-master.zip go

  10. locust: python 协程 gevent

  11. ostaw32-src-1404.zip