2、使用siege进行服务端性能测试

先查看siege帮助

输入siege -h

2、使用siege进行服务端性能测试

翻译一下常用命令

-c  指定并发数

-r  指定重复次数

-d  指定请求的延迟时间,注意每个请求间随机延迟

-f  指定url列表,可以一次给多个地址加压

-t  指定用例执行时间,比如-t 10s -t 1M(H)之类

-g  获取请求的headers信息并打印出来,debug专用

-H  指定请求的headers信息

-l或--log=[File]  指定测试结果的路径

根据帮助文档我们可以直接实战

需求:

1、模拟10个用户同时访问http://www.baidu.com

2、一共跑2个循环

实现:

1、输入:siege -c 20 -r 3 http://www.baidu.com

2、使用siege进行服务端性能测试

2、运行后结果

2、使用siege进行服务端性能测试

 

 3、了解各字段意思

  • Transactions: siege对服务器的访问次数。如果页面发生了redirect,那么siege会将跳转过的请求算成是另一个transaction
  • Availability: socket连接的成功率。算法是,如果页面发生了timeout,4xx,5xx,那么该请求算是失败请求,成功率就等于(所有请求-失败请求) / 总请求数
  • Elapsed time: 所有请求耗费的时间
  • Data transferred: 所有请求传输的数据量,包括请求的headers和content。所以这个数值可能比server端统计的数值要大一点
  • Response time: 平均响应时间
  • Transaction rate: Transactions / Elapsed time
  • Throughput: 每秒平均传输的数据量
  • Concurrency: 平均并发的请求数
  • Successful transactions: 所有status code < 400的transactions数量
  • Failed transactions: 所有status code >= 400的transactions数量
  • Longest transaction: 最耗时的请求时间
  • Shortest transaction: 最短单个请求时间

 4、分析结果

我们对http://www.baidu.com用10个用户跑了两个循环,对服务器访问了180次,连接的成功率是85.71%。所有请求耗费的时间是1.60secs,所有请求传输的数据量是2.10M,平均响应时间0.05 secs,吞吐量是112.50 trans/sec,每秒平均传输的数据量是1.31 MB/sec,

平均并发的请求数6.04,请求成功的次数是180次,请求失败的数是30次,最耗时的请求时间是1.01,最短单个请求时间0.00.  

有个注意点,就是连接的成功率是85.71%是怎么来的呢?是请求成功数/请求总数。也就是180/180+30

当然这些数据中,我觉得最重要的是Transaction rate,上面这个例子是10个用户跑了两个循环,Transaction rate是112.50 trans/sec,如果这个吞吐量不满足需求,那么我们就可以把这个数据交给开发,让开发进行处理。