实战分享:在JMeter中使用KeepAlive进行http请求的技巧和经验总结
Sampler-http请求之KeepAlive使用总结
测试环境
apache-jmeter-2.13
KeepAlive使用介绍
说明:
1、Use KeepAlive
勾上,则表示为求连接设置请求头Connection: keep-alive
,该配置对默认的HTTP实现不起作用,因为连接重用不受用户控制,对Apache HTTP组件HttpClient
起作用。
这个配置到底有啥用呢?
我们都知道,发起HTTP请求时,需要建立TCP连接,对于普通非keep-alive
请求,即不包含请求头Connection: keep-alive
的请求,请求完成后,会关闭该TCP连接,再次发起同类请求时,需要再次建立TCP连接,高并发的情况下,会增加服务器资源消耗,对于keep-alive
请求,则会告诉服务器,HTTP请求结束后,在条件允许的情况下,保持TCP连接,下次发送请求时,使用上次建立的TCP连接进行数据传输。至此,这个配置有啥用,就不用我说了吧
2、注意,这里KeepAlive
是针对同一个线程而言的,其使用效果受到多
方面影响,如下:
客户端
Http实现
HTTPClient4
使用Apache Http组件 HttpClient 4.x(推荐使用)
Java
使用JVM提供的HTTP实现。
空值
如果HTTP请求默认值
配置元件中,Advanced
选项卡中有设置非空请求客户端实现,则使用该客户端实现,否则使用jmter.properties
文件中jmeter.httpsampler
属性定义的客户端实现,否则使用默认的 HttpClient4
。(原文:Blank value does not set implementation on HTTP Samplers, so relies on HTTP Request Defaults if present or on jmeter.httpsampler property defined in jmeter.properties
注意:Java
HTTP实现有以下限制:
- 因为没有对连接重用做控制。所以,当连接被JMeter释放时,该连接可能被相同的线程重用,也可能不被重用。
- 最适合单线程使用—各种设置都通过系统属性定义,因此作用于所有连接。
- 通过代理处理HTTPS时存在bug(
CONNECT
未正确处理)。请参阅Java Bug 6226610和6208335。 - 不支持虚拟主机。
- 仅支持这些方法:
GET
,POST
,HEAD
,OPTIONS
,PUT
,DELETE
和TRACE
- 不支持使用密钥库配置进行基于客户端的证书测试。
JMeter配置
使用HTTPClient4
实现时,连接重用还受到JMeter自身参数配置文件httpjmeter.properties
中httpclient4.time_to_live
参数配置的影响,如下,该参数值以毫秒为单位,默认为2000,无论如何,http的生存时间,超过该参数值的连接,不会被重用。
httpclient4.time_to_live=2000
服务端
JMeter Use KeepAlive
使用效果可能受到服务器相关配置影响,不同类型的服务器配置不一样,以Nginx
为例子,和以下配置相关
keepalive_requests number
设置通过一条keep-alive
连接可以服务的最大请求数。当请求数超过该指令设置的最大值时,连接将被关闭。
keepalive_time time
限制通过keep-alive
连接发起的请求,可以被处理的最大时间,达到该时间,则关闭该连接
keepalive_timeout timeout;
timeout
设置keep-alive
客户端连接在服务器端保持open状态时间,超过这个时间服务器将关闭连接。如果设置为0,那么禁用keep-alive
客户端连接。
推荐阅读
-
实战分享:在JMeter中使用KeepAlive进行http请求的技巧和经验总结
-
如何轻松使用JMeter进行HTTP接口测试 - 一步步教你设置线程组、 cookie、默认值与Sampler,加上响应断言和监听器,打造基础测试案例。针对复杂情况,将子系统和流程测试分类组织,确保数据一致性。同时,别忘了感谢阅读,给新手提供实战学习资源与全套测试指南,助你轻松踏上自动化测试之路! - 在"测试计划"点击右键,添加"线程组"并设定初始"线程数"和"循环次数" - 配置"HTTP Cookie管理器"与"Http请求默认值",输入目标系统信息,如域名、端口、协议等,让所有相关Sampler共享这些默认设置 - 在线程组内增加"HTTP Request"的Sampler,并填入接口详情,比如路径、请求方法及参数 - 添加"响应断言"检查接口返回结果,通过正则表达式验证预期结果 - 安装监听器,实时查看测试执行状况 - 如需处理流程性接口,请依次添加多个相关Sampler,关联前后请求间的上下文数据 特别提示:为了帮助大家避免学习中的曲折,我们准备了详尽的视频和文档资料库,无论你是软件测试的新手还是老司机,都能从中找到所需的全方位支持。只需点击下方链接加入我们的学习交流社群,就能立刻获取这份珍贵的学习宝藏!再次感谢您的耐心阅读,愿它成为您前行路上的一大助力!
-
南邮OJ Web任务大揭秘:层层挑战剖析 1. 挑战一:迷宫般的目录探索 题目作者似乎穷举了所有可能的目录组合,最终在404.php中的