JMeter Sampler-http请求之KeepAlive使用总结

简介: JMeter Sampler-http请求之KeepAlive使用总结

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。
  • 不支持虚拟主机。
  • 仅支持这些方法:GETPOSTHEADOPTIONSPUTDELETETRACE
  • 不支持使用密钥库配置进行基于客户端的证书测试。

JMeter配置

使用HTTPClient4实现时,连接重用还受到JMeter自身参数配置文件httpjmeter.propertieshttpclient4.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客户端连接。

目录
相关文章
|
27天前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
328 130
|
2月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
360 2
|
4月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
444 65
|
3月前
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
146 8
|
3月前
|
缓存
|
2月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
2月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
3月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
181 0
|
3月前
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
270 0
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
751 23

热门文章

最新文章