网站压力测试

缘由

最近网站老是崩溃卡死,差不多有10来分钟无法正常运行,这就想到了测试工具,同时也检测一下到底是哪里配置出问题了;这个压力测试工具有许多,我用过apache的ab,以及最近用的siege工具;

ab

这个只要服务器运行的是apache就基本带有;

一、安装

sudo apt-get install apache2-utils 

二、测试

ab -n 100 -c 10 url

其中-n表示请求数,-c表示并发数

三、解释

Concurrency Level: 100    //并发请求数

 Time taken for tests: 50.872 seconds  //整个测试持续的时间

 Complete requests: 1000   //完成的请求数

 Failed requests: 0  //失败的请求数

 Total transferred: 13701482 bytes  //整个场景中的网络传输量

 HTML transferred: 13197000 bytes  //整个场景中的HTML内容传输量
  Requests per second: 19.66 [#/sec] (mean) //吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值

  Time per request: 5087.180 [ms] (mean) //用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值

  Time per request: 50.872 [ms] (mean, across all concurrent requests) //服务器平均请求处理时间,大家最关心的指标之三
  Transfer rate: 263.02 [Kbytes/sec] received    //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 

siege

一、安装

  • 下载地址
  • 下载安装
    wget http://download.joedog.org/siege/siege-latest.tar.gz
    tar -xvf siege-latest.tar.gz
    cd siege-4.0.4/(注意替换成当前版本号)
    ./configure
    make
    make install
  • 检查:
    siege -V

    出现类似SIEGE 4.0.4,则安装成功

二、基本使用

  • 创建url.txt,文件名随意,其内容为网站地址,可多个地址(一行只能有一个);

    vi url.txt
  • 测试

    siege -c 25 -t 5s -d 1 url.txt
附加含义
-c线程数(用户数)25
-t持续时间 5s
-d每个请求的延迟时间,在1和d之间 1s
url.txt进行测试的url,也可以是一个TXT文件,随机同时测多个url

三、配置文件

  • 查看配置文件目录:

    siege --config 

    会打印出一系列配置,其中resource file指示的目录为配置文件 ex : ~/.siege/siege.conf

  • 可能需要修改的参数:
    1 . limit:最大并发数,默认25或者255,当你-c值超过此值会使用默认值,建议修改为一个比较大的数值,比如100000
    2 . failures:最大失败数,达到此值会自动终止测试,建议修改为较大值,100000

四、测试报告

Transactions: 250 hits

Availability:100.00 %

Elapsed time: 14.67 secs

Data transferred: 448000 bytes

Response time: 0.43 secs

Transaction rate: 17.04 trans/sec

Throughput: 30538.51 bytes/sec

Concurrency: 7.38

Status code 200: 250

Successful transactions: 250

Failed transactions: 0

Longest transaction:0.22

Shortest transaction:0.01

解析:

Transactions=Successful transactions:成功请求总数

Availability:正确率(成功率)

Elapsed time:总耗时

Data transferred:交换的数据量

Response time:请求平均响应时间

Transaction rate:单位时间内请求数,公式:Transactions / Elapsed time

Throughput:吞吐量,单位时间内交换的数据量,公式:Data transferred / Elapsed time

Concurrency:并发数(估算值),公式:Transactions * Response time / Elapsed time

Failed transactions:失败请求数

Longest transaction:最长请求时间

Shortest transaction:最短请求时间


要不赞赏一下?

微信
支付宝
PayPal
Bitcoin

版权声明 | Copyright

除非特别说明,本博客所有作品均采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明转自-
https://www.emperinter.info/2020/05/12/website-stress-test/

No comments yet.

Write a comment: