linux压力测试工具post,linux 下如何做压力测试 ab 压力测试 - 沃森博客

一.ab 的简介

ab 是 apachebench 命令的缩写,ab 是 apache 自带的压力测试工具。ab 非常实用,它不仅可以对 apache 服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如 nginx、tomcat、IIS 等。

二.ab 的原理

ab 的原理:ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问。它的测试目标是基于 URL 的,因此,它既可以用来测试 apache 的负载压力,也可以测试 nginx、lighthttp、tomcat、IIS 等其它 Web 服务器的压力。

ab 命令对发出负载的计算机要求很低,它既不会占用很高 CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似 CC 攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

三.ab 的安装

yum -y install httpd-tools

测试安装是否成功:

[root@yzmcms /]# ab -V

This is ApacheBench, Version 2.3

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

四.性能指标

吞吐量(Requests per second):

服务器并发处理能力的量化描述,单位是 reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。

记住:吞吐率是基于并发用户数的。这句话代表了两个含义:

a、吞吐率和并发用户数相关

b、不同的并发用户数下,吞吐率一般是不同的

计算公式:总请求数/处理完成这些请求数所花费的时间,即

Request per second=Complete requests/Time taken for tests

必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。

并发连接数(The number of concurrent connections):

并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

并发用户数(Concurrency Level):

要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在 HTTP/1.1 下,IE7 支持两个并发连接,IE8 支持 6 个并发连接,FireFox3 支持 4 个并发连接,所以相应的,我们的并发用户数就得除以这个基数。

用户平均请求等待时间(Time per request):

计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:

Time per request=Time taken for tests/(Complete requests/Concurrency Level)

服务器平均请求等待时间(Time per request:across all concurrent requests):

计算公式:处理完成所有请求数所花费的时间/总请求数,即:

Time taken for/testsComplete requests

可以看到,它是吞吐率的倒数。

同时,它也等于用户平均请求等待时间/并发用户数,即

Time per request/Concurrency Level

五.ab 测试实例:

模拟 GET 请求:

ab -c 10 -n 100 http://bbs.yzmcms.com/index/test

-c 10 表示并发用户数为 10

-n 100 表示请求总数为 100

模拟 POST 请求:

ab -c 10 -n 100 -p '/tmp/post.txt' -T 'application/x-www-form-urlencoded' 'http://bbs.yzmcms.com/index/test/post'

-p 模拟 post 请求,文件格式为 name=yzmcms&status=1 ,配合-T 使用

-T post 数据所使用的 Content-Type 头信息,例如-T 'application/x-www-form-urlencoded'

POST 请求时需把 post 的数据写入到文件内,然后 -p '文件地址'即可

返回结果说明:

This is ApacheBench, Version 2.3

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking bbs.yzmcms.com (be patient).....done

Server Software: nginx #测试服务器的名字

Server Hostname: bbs.yzmcms.com #请求的 URL 主机名

Server Port: 80 #web 服务器监听的端口

Document Path: /index/test/post #请求的 URL 中的根绝对路径

Document Length: 1 bytes #HTTP 响应数据的正文长度

Concurrency Level: 10 # 并发用户数,这是我们设置的参数之一

Time taken for tests: 0.432 seconds #所有这些请求被处理完成所花费的总时间 单位秒

Complete requests: 100 # 总请求数量,这是我们设置的参数之一

Failed requests: 0 # 表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况

Write errors: 0

Total transferred: 18000 bytes #所有请求的响应数据长度总和。包括每个 HTTP 响应数据的头信息和正文数据的长度

Total body sent: 20400

HTML transferred: 200 bytes # 所有请求的响应数据中正文数据的总和,也就是减去了 Total transferred 中 HTTP 响应数据中的头信息的长度

Requests per second: 231.44 [#/sec] (mean) #吞吐率,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间

Time per request: 43.207 [ms] (mean) # 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)

Time per request: 4.321 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level

Transfer rate: 40.68 [Kbytes/sec] received

46.11 kb/s sent

86.79 kb/s total

Connection Times (ms)

min mean[+/-sd] median max

Connect: 8 12 2.5 12 16

Processing: 14 28 7.4 28 44

Waiting: 14 28 7.4 28 44

Total: 23 40 8.3 40 58

Percentage of the requests served within a certain time (ms)

50% 40

66% 44

75% 45

80% 47

90% 50

95% 55

98% 56

99% 58

100% 58 (longest request)

总结:ab 确实是一款比较好用的压力测试工具。

转载至 yzmcms 文章。

历史上的今天:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值