用 Apache Bench 来进行一次快速性能测试

今天是关于WEB服务器性能测试的话题!

WEBサーバを構築していると、どこまでの負荷に耐えられるか、パフォーマンスはどうか気になりますよね。
これをしっかり確認しておかないと、アクセス過多になるとパフォーマンスが激悪になったり、
負荷がかかった時に、システムダウンなんてことになりかねないです。
で、そんなことにならないように気軽にWEBサーバの性能を測定できるのがApacheに標準で付いているab(Apache Bench)ツール。

Apache Bench是一个可以用于DOS攻击的工具!使用时请务必注意!

Apache Bench是什么?

「ab」是Apache Bench(Apache 性能测试工具)的缩写,是用于测量Apache默认附带的WEB服务器性能的命令。在安装Apache时,它会被存放在<Apache安装目录>\bin\下,如果是Windows系统,则命名为ab.exe。

使用方法 (shǐ fǎ)

通常情况下,需要使用-n和-c选项。(事实上,只要记住这两个选项,基本上就没问题了!)

-n指定了在总共发出的请求数。
-c指定了同时连接的数量。

这里是命令格式。

ab.exe -n <发行请求总数> -c <同时连接数>

以下列出了主要选项。由于还有许多其他选项,请使用-h选项查看详细信息。

オプション名説明-n 数値リクエストの総数を数値で指定-c 数値同時に発行するリクエストの数を数値で指定-t 数値サーバからのレスポンスの待ち時間(秒)を数値で指定-A ユーザー名:パスワードベーシック認証が必要なコンテンツにテストする-P ユーザー名:パスワード認証の必要なプロキシを通じてテストする-X プロキシサーバ名:ポート番号プロキシ経由でリクエストする場合に指定-Vバージョンを表示-hヘルプを表示

试用一下

假设有100个用户同时向 http://www.example.co.jp/ 发出1个请求。

使用ab命令进行100个请求,每次请求100个并发连接,访问http://www.example.co.jp/网站。

假设同时有100个用户,每个用户发出10个请求。
将n设置为100 x 10 = 1000。

使用100个并发连接向http://www.example.co.jp/发送1000个请求。

如果连接目标应用使用了基本认证,
请使用冒号(:)将基本认证用户名和密码指定在A之后。

使用ab命令进行100次请求,每次并发100个请求,使用hogeuser和hogepass作为认证信息发送到http://www.example.co.jp/。

如果同时发出的总请求数少于同时连接的数量,将显示错误消息。
同时以100人发送总共10个请求是不可能的。

ab -n 10 -c 100 -A hogeuser:hogepass http://www.example.co.jp/:
ab命令:无法使用并发级别大于请求数量的情况

看法

下面是执行以下命令时的结果示例。URL是假的。

使用ab命令进行100个并发线程,共发送100个请求至http://www.example.co.jp/。

服务器软件: Apache/2.4.10
服务器主机名: http://www.example.co.jp/
服务器端口: 80

文档路径:/
文档长度:25559字节

并发级别:100
测试所用时间:8.374秒
完整请求:100
失败请求:0
总传输量:2599100字节
HTML传输量:2555900字节
每秒请求数:11.94个/秒
每个请求的时间:8374.479毫秒
每个请求的时间:83.745毫秒
传输速率:303.09 [千字节/秒] 接收

连接时间(毫秒)
最小值 平均值[+/-标准差] 中位数 最大值
连接:10 16 4.1 15 42
处理:1382 4432 1913.3 4653 7255
等待:1371 4334 1912.9 4395 7240
总计:1398 4448 1913.6 4664 7271

在某个时间范围内接受请求的百分比(毫秒)
50% 4664
66% 5844
75% 6273
80% 6607
90% 6891
95% 7105
98% 7269
99% 7271
100% 7271(最长的请求)

这是一个显示。
我认为很难理解是什么,所以我将通过反向查找来解释。

这些请求全部都顺利处理了吗?
Complete requests表示成功处理的请求数量。
Failed requests表示处理失败的请求数量。
这次发出了100个请求,Complete requests为100,Failed requests为0,
这意味着所有的请求都被正常处理了。太好了。

你能忍受多少请求?

运行100个请求,每个请求并发100个连接。

请逐渐增加-JoJo的-n和-c值。
到那时,失败的请求将不再为0,那是该WEB服务器的负载极限。

请看一下每秒请求数。根据数据显示,每秒能够处理约12个请求。在WEB服务器中,这个数值非常重要,因此记住这个就足够了。

表现如何?
Time per request (mean, across all concurrent requests)表示每个请求的处理时间。
这次共花了83.745毫秒。
此外,还有一个令人困惑的指标,即Time per request (mean)。
这指的是所有请求的处理时间。

最后 (zuì

根据情况选择以下工具,以度量网络服务器的性能。

・Apache JMeter – 寶塔JMeter
・httperf – 寶塔httperf
・weighttp – 寶塔weighttp

Apache Bench是一种工具,可以用于发起DOS攻击。在使用时请务必十分小心。

bannerAds