压力测试有很多工具,但ab是最简单的。
ab是apache自带的压测工具。
命令:
ab -n 100 -c 50 http://192.168.99.100/test.php
解释一下,ab命令最主要就上面两个参数,平时基本就够用了。
-n 总共发出多少个请求。
-c 一次同时会发送多少个。
比如上面的命令,一次同时发送50个,总共发送100个请求。实际上很简单,就是总共发送2次。
主要输出是如下
Concurrency Level: 50 每次并发数
Time taken for tests: 1.872 seconds 总共时间
Complete requests: 100 总共正常完成的请求
Failed requests: 0 总共未完成的请求,当增加每次并发,必然发生
Total transferred: 15400 bytes
HTML transferred: 100 bytes
Requests per second: 53.42 [#/sec] (mean) 每秒完成的请求数,
Time per request: 936.000 [ms] (mean) 单次请求完成时间,
Time per request: 18.720 [ms] (mean, across all concurrent requests)
Transfer rate: 8.03 [Kbytes/sec] received 每秒网络流量。
解释上面的输出,
最重要的是第一个 Time per request,这是程序员比较关心的。服务器完成单个请求花费的时间,936毫秒。
第2个Time per request 意义不大,不用管。
其次,通过增加每次并发数(即增大压力),逐渐的会发现有失败请求出现。在没有失败的最大并发数,也就是你的服务器的并发处理能力了,
我在本机电脑实测docker,并发大约在200左右,可粗略理解为200人同时在线。
一般来说,我测试时,会选择总共请求数正好是每次并发数的两倍,这样测试效果比较好。
[img]http://dl2.iteye.com/upload/attachment/0131/1120/77f1d233-8d74-37a5-ae2f-13ca30004fd5.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1122/0a9298c8-031b-3580-9021-92824471d550.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1124/53f17c3b-958d-3fec-b914-d9c4ef5bed7d.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1126/9d9a539c-9656-31e5-adff-7ad4c7fd120b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1128/cde83321-39aa-3a20-af24-ec5e29f72116.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1130/80ee5f20-70ae-3ab3-92f7-d67e1878757e.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1132/c90f73b9-f66f-3eb7-b91d-b9c3ed32a0a8.png[/img]
ab是apache自带的压测工具。
命令:
ab -n 100 -c 50 http://192.168.99.100/test.php
解释一下,ab命令最主要就上面两个参数,平时基本就够用了。
-n 总共发出多少个请求。
-c 一次同时会发送多少个。
比如上面的命令,一次同时发送50个,总共发送100个请求。实际上很简单,就是总共发送2次。
主要输出是如下
Concurrency Level: 50 每次并发数
Time taken for tests: 1.872 seconds 总共时间
Complete requests: 100 总共正常完成的请求
Failed requests: 0 总共未完成的请求,当增加每次并发,必然发生
Total transferred: 15400 bytes
HTML transferred: 100 bytes
Requests per second: 53.42 [#/sec] (mean) 每秒完成的请求数,
Time per request: 936.000 [ms] (mean) 单次请求完成时间,
Time per request: 18.720 [ms] (mean, across all concurrent requests)
Transfer rate: 8.03 [Kbytes/sec] received 每秒网络流量。
解释上面的输出,
最重要的是第一个 Time per request,这是程序员比较关心的。服务器完成单个请求花费的时间,936毫秒。
第2个Time per request 意义不大,不用管。
其次,通过增加每次并发数(即增大压力),逐渐的会发现有失败请求出现。在没有失败的最大并发数,也就是你的服务器的并发处理能力了,
我在本机电脑实测docker,并发大约在200左右,可粗略理解为200人同时在线。
一般来说,我测试时,会选择总共请求数正好是每次并发数的两倍,这样测试效果比较好。
[img]http://dl2.iteye.com/upload/attachment/0131/1120/77f1d233-8d74-37a5-ae2f-13ca30004fd5.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1122/0a9298c8-031b-3580-9021-92824471d550.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1124/53f17c3b-958d-3fec-b914-d9c4ef5bed7d.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1126/9d9a539c-9656-31e5-adff-7ad4c7fd120b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1128/cde83321-39aa-3a20-af24-ec5e29f72116.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1130/80ee5f20-70ae-3ab3-92f7-d67e1878757e.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0131/1132/c90f73b9-f66f-3eb7-b91d-b9c3ed32a0a8.png[/img]