需求:
在对Nginx module 采用Aapche ab进行性能和压力测试的过程中发现:
1. 对于不同的并发线程,相同的请求数,性能/压测所需要的时间变化比较大;
2. 对于高并发的情况下,千万级别的请求数,持续时间仅仅是几百秒,不仅不足以用于压力测试,而且也不足以充分体现服务器的CPU, load, memory等的运行状况;
因此,非常有必要使Apache ab能够按照时间设置来进行性能/压力测试。
以下是实际的ab测试数据:
并发数为2600的测试数据 写道
Document Length: 265 bytes
Concurrency Level: 2600
Time taken for tests: 330.728 seconds
Complete requests: 10000000
并发数为100的测试数据 写道
Document Length: 265 bytes
Concurrency Level: 100
Time taken for tests: 517.260 seconds
Complete requests: 10000000
解决方案:
经过对Apache ab源代码进行分析后,发现:
1. ab本身提供的参数 -t timelimit Seconds to max. wait for responses, 可以用于设置ab的总测试时间;
2. 当使用-t参数时,ab内部默认最大的请求数为50000。
/* -t 说明 */
fprintf(stderr, " -t timelimit Seconds to max. wait for responses\n");
/* maximum number of requests on a time limited test */
#define MAX_REQUESTS (INT_MAX > 50000 ? 50000 : INT_MAX)
/* 参数处理 */
case 't':
tlimit = atoi(optarg);
requests = MAX_REQUESTS; /* need to size data array on
* something */
也就是说,-t参数的原本目的,是用于设置响应超时时间的,在最大请求数50000次的前提下的超时时间。
这就会有两种情况出现:
1. 如果50000次请求在所设置的超时时间内未全部请求完成,则ab会默认结束后续的请求并统计最终数据。
2. 如果50000次请求提前在所设置的超时时间内全部完成,则ab会在请求完成后终止并统计最终数据,也就说,不管你超时时间设置多长,ab只会请求50000次。
这对于长时间的性能和压力测试来说,并不靠谱。
因此,我们需要考虑下,如何在对ab的源码改动量最小的情况下,使其能够按照我们所设置时间进行测试。在此提供两个解决方案。
解决方案一:需要修改源代码
将设置-t参数之后的默认最大请求数改为我们需要的数目,如:
/* maximum number of requests on a time limited test */
#define MAX_REQUESTS (INT_MAX > 10000000 ? 10000000 : INT_MAX)
但是,这需要注意一个问题:
1. requests变量是int类型,人为设置最大请求数时,注意不要超过变量的边界;
解决方案二:不需修改源代码——从ab源码的小漏洞来设置超时时间和最大请求数(推荐)
根据ab源代码对传入参数的解析顺序来看,对-n的参数的解析是在-t之前。而他们均需要设置requests变量的值。
case 'n':
requests = atoi(optarg);
if (requests <= 0) {
err("Invalid number of requests\n");
}
break;
case 't':
tlimit = atoi(optarg);
requests = MAX_REQUESTS; /* need to size data array on
* something */
break;
因此,我们可以在设置ab参数时,先设置-t超时时间,再设置-n最大请求数。这样request变量就会被-n重新设置,并且能为我们检测所设置的最大请求数是否符合要求。 如:
/* 执行命令 */
./ab -c 10 -t 1000 -n 10000000 "http://www.xxx.com/index.html"
/* 执行结果 */
Document Length: 112640 bytes
Concurrency Level: 10
Time taken for tests: 1000.003 seconds
Complete requests: 519246
从结果可以看出:最大请求数超过默认值50000,且按照我们设置的超时时间终止。
ok,对Apache ab 按照时间进行性能/压力测试到此结束。
分享到:
相关推荐
【标题】:“(转)ab-tomcat压力测试工具” 【描述】:这篇博客文章并未提供具体的描述,但根据标题可以推断,它可能涉及一个名为"ab"的压力测试工具在Tomcat应用服务器上的使用。"ab"是Apache HTTP服务器项目的一...
根据给定的信息,本文将详细解释如何在RHEL 5.4环境下搭建一套完整的LAMP(Linux、Apache、MySQL、PHP)系统,并在此基础上增加Discuz论坛、Awstats Web日志分析工具、以及使用AB(ApacheBench)进行HTTP性能测试,...
与传统的压力测试工具相比,如LoadRunner和JMeter,Gatling无需复杂的客户端安装,只需要JVM环境即可运行,操作方式类似于Apache的ab命令,更加便捷。 Gatling的一大亮点在于其专用的Web测试功能,它允许用户像...
根据提供的文件信息,本文将详细解释如何在RHEL 5.4系统环境下,从源码构建并部署Apache、MySQL、PHP、Discuz、phpMyAdmin、Awstats以及使用AB进行压力测试的过程。此过程旨在搭建一个完整的LAMP环境,并集成一系列...
4. Apache Bench (ab):轻量级的HTTP服务器性能测试工具。 5. CloudHarmony:专注于云服务性能测试,提供跨云平台的比较和基准测试。 四、云平台性能测试装置 1. 虚拟机集群:通过搭建虚拟机集群模拟大规模用户,...
- **ab (Apache Bench)**:性能基准测试工具,可以模拟多个并发用户对服务器进行压力测试。 - **httpd-tweak**:一些发行版提供的优化工具,用于调整服务器配置以提升性能。 4. **源码编译**:对于开发者,Apache...
在"ab压力测试hhvm运行ci"这个场景中,"ab"工具(ApacheBench)被用于模拟大量并发用户对HHVM运行的CI环境进行压力测试。ApacheBench是Apache HTTP服务器自带的一个基准测试工具,它可以测量一个Web服务器在特定负载...
【AB压力测试详解】 ...总之,AB是一个强大的Web服务器压力测试工具,通过熟练掌握其安装、使用和参数设置,能够有效地评估服务器的性能瓶颈和并发处理能力,为优化服务器配置和提升服务质量提供重要参考。
本文将详细介绍几个常见的测试工具,包括Web服务器压力测试工具和数据库性能测试工具。 首先,Webbench是一个广泛使用的开源Web服务器压力测试工具,由Lionbridge公司开发。它可以模拟大量并发用户对网站发起请求,...
使用ab或wrk工具,可以设置并发用户数、请求次数等参数,对Nginx服务器进行压力测试,获取吞吐量、响应时间等指标,根据测试结果进行性能优化,如调整worker_processes、worker_connections、sendfile、tcp_nopush...
【标签】"压力测试工具 ab" 强调了这个压缩包内包含的Apache Bench(ab)工具。Apache Bench是一款轻量级的压力测试工具,它可以模拟多个并发用户对Web服务器发送HTTP请求,从而测试服务器的处理能力和稳定性。这...
标题中的“Go-替代ApacheBench(ab)的HTTP负载生成器”指的是使用Go语言编写的一种工具,它能够替代传统的ApacheBench(ab)工具来执行HTTP负载测试。ApacheBench是一款广泛使用的命令行工具,用于测量Web服务器的...
在课程设计过程中,学生可能通过编写脚本、使用性能监测工具(如top、vmstat、iostat)收集数据,进行Apache的基准测试和压力测试,分析结果并提出优化建议。测试报告会详细记录测试环境、方法、结果和结论。 7. ...
6. **性能测试**:使用工具如ab(ApacheBench)进行基准测试,确保性能得到了实际提升。 #### 四、PHP加速 除了Apache本身的优化外,PHP作为常用的Web开发语言之一,其性能也直接影响着整个网站的速度。以下是两种...
### 四、Apache的ab压力测试 Apache Bench (ab) 是一个用于测量服务器性能的工具。它可以模拟多个并发用户请求,帮助评估服务器的承受能力。例如,测试10个并发请求100次: ``` ab -n 100 -c 10 http://localhost/...
- **性能测试**:使用工具如 `ab` 或 `wrk` 对网站进行压力测试,观察响应时间和吞吐量。 - **安全性评估**:利用在线工具如 SSL Labs 的 SSL Server Test 进行安全性评估。 ### 五、注意事项 - **更新维护**:定期...