apache自带压力测试工具ab的使用及解析
当你搭建了apache服务器并在上面部署了web网站,在网站运行前,为了使apache服务器的性能得到更好的应用,我们可以先对其进行压力测试。进行压力测试其实非常简单,我们也不用再额外下载安装什么测试工具,因为Apache HTTP Server自带了一个压力测试工具——ab,ab的可选参数比较多,但一般我们测试只需要使用其中的两个即可
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定压力测试的并发数。
在命令行执行命令:
[root@RS1 ~]# ab -n 4000 -c 500 http://192.168.0.162/index.html This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.0.162 (be patient) Completed 400 requests Completed 800 requests Completed 1200 requests Completed 1600 requests Completed 2000 requests Completed 2400 requests Completed 2800 requests Completed 3200 requests Completed 3600 requests Completed 4000 requests Finished 4000 requests Server Software: Apache (服务器软件名称及版本信息) Server Hostname: 192.168.0.162 (服务器主机名) Server Port: 80 (服务器端口) Document Path: /index.html (供测试的URL相对路径) Document Length: 117 bytes (供测试的URL返回的文档大小) Concurrency Level: 500 (测试并发数) Time taken for tests: 1.469 seconds (压力测试消耗的总时间) Complete requests: 4000 (完成请求的总次数) Failed requests: 0 (失败的请求数) Write errors: 0 (网络连接写入错误数) Total transferred: 1477476 bytes (传输的总数据量) HTML transferred: 468468 bytes (HTML文档的总数据量) Requests per second: 2722.46 [#/sec] (mean) (平均每秒的请求数)吞吐速率 Time per request: 183.657 [ms] (mean) (所有并发用户(这里是500)都请求一次的平均时间)用户平均请求等待时间 Time per request: 0.367 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)服务器平均请求处理的时间 Transfer rate: 982.02 [Kbytes/sec] received (平均每秒网络上的流量,可以帮助排除是否有存在网络流量过大导致响应时间延长的问题) Connection Times (ms) min mean[+/-sd] median max Connect: 0 27 152.9 2 1008 Processing: 1 79 266.9 26 1446 Waiting: 0 77 266.9 24 1445 Total: 16 106 305.2 28 1466 Percentage of the requests served within a certain time (ms) 50% 28 66% 29 75% 29 80% 30 90% 31 95% 1026 98% 1450 99% 1455 100% 1466 (longest request)
以上结果可以看出,服务器压力很小,下面测试一个压力大的
Server Software: Apache Server Hostname: 192.168.0.162 Server Port: 80 Document Path: /index.html Document Length: 117 bytes Concurrency Level: 4000 Time taken for tests: 3.257 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 3749409 bytes HTML transferred: 1188837 bytes Requests per second: 3070.65 [#/sec] (mean) Time per request: 1302.655 [ms] (mean) 可以看出用户平均等待时间明显增加 Time per request: 0.326 [ms] (mean, across all concurrent requests) Transfer rate: 1124.33 [Kbytes/sec] received
在加大并发数,会发现:
[root@RS1 ~]# ab -n 100000 -c 10000 http://192.168.0.162/index.html This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.0.162 (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests apr_socket_recv: Connection reset by peer (104) Total of 35491 requests completed (只完成了3W多个请求就断了)
注意:在上面的压力测试中,Apache使用的是默认配置,并没有经过任何优化措施处理。实际上,Apache在经过配置优化后,只要服务器硬件够用,Apache服务器是能够撑起更多的并发量的。
好记性不如烂笔头,最难不过坚持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了