JMeter中的HTTPS套接字错误

Apache JMeter对启用SSL的应用程序执行性能和/或负载测试时,SSL套接字错误可能是经常遇到的麻烦,严重阻碍了您的测试工作。本文重点介绍如何通过相应地配置和调优JMeter来克服这些与连接相关的错误。

在Jmeter中指示SSL套接字问题的错误消息示例包括:

Non HTTP response code: java.net.SocketException Non HTTP response message: Connection reset
Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: connect timed out
Non HTTP response code: java.net.SocketTimeoutException Non HTTP response message: Read timed out

建议#1:使用最新版本的JMeter

强烈建议使用最新版本,以利用新的改进和组件。

避免在最后一个版本之前使用早于3个版本的版本。

建议#2:在JMeter中启用DEBUG模式

将以下内容添加到jmeter.properties以启用JMeter Logger面板:

jmeter.loggerpanel.display=true

要通过JMeter菜单将日志级别增加到DEBUG:

Options -> Log Level -> DEBUG
克服JMeter中的HTTPS套接字错误

要通过log4j2.xml启用上下文和线路日志记录的调试模式:

<Logger name="org.apache.http" level="debug" />

建议#3:设置连接超时

JMeter中的默认连接超时是开箱即用的20秒。为帮助诊断和解决套接字连接问题,增加此值通常很有帮助。为此,请在JMeter测试计划中为HTTP Request对象指定更高的连接超时。例如,设置为60000(毫秒)以将总超时增加到60秒。

从“配置元素”选项中添加“HTTP请求默认”配置元素(即,右键单击测试计划并添加此“HTTP请求默认值”)。

克服JMeter中的HTTPS套接字错误

在“HTTP请求默认值”中,有一个选项 - 连接'超时(毫秒)'在此字段中指定您的连接超时值,它将应用于所有子采样器。如果在测试计划级别添加了“HTTP请求默认值”,则它将应用于所有采样器和所有线程组。

克服JMeter中的HTTPS套接字错误

要指定单独的连接超时,请在每个采样器的相同字段中指定。单个采样器连接超时将覆盖“HTTP请求默认”连接超时值。

克服JMeter中的HTTPS套接字错误

建议#4:延迟线程创建

JMeter可以选择延迟线程创建,直到线程开始采样(即,在任何线程组延迟和线程本身的加速时间之后)。这允许非常大的线程总数,前提是不会有太多并发的线程。

克服JMeter中的HTTPS套接字错误

建议5:禁用并行下载

JMeter使用更多资源来模拟浏览器并行获取嵌入资源,如css,gif,js和静态内容。如果有许多用户,则可能会创建太多线程,并且由于JMeter端的带宽争用而开始对响应时间产生负面影响。如果要模拟许多用户,建议禁用并行下载,因为JMeter不会模拟浏览器的缓存,浏览器也不会在后续请求中重新下载嵌入式资源。

克服JMeter中的HTTPS套接字错误

建议#6:配置受信任和客户端SSL证书

如果您的应用程序服务器层上有内部签名或自签名证书,则需要将JMeter配置为将这些证书识别为有效。要解决此问题,请修改system.properties并使用相关的签名者证书配置信任库。

# Truststore properties (trusted certificates)
javax.net.ssl.trustStore=C:/trust.jks
javax.net.ssl.trustStorePassword=sample

如果您的应用程序需要SSL客户端证书身份验证或授权,则需要创建密钥库并在指向该密钥库的system.properties文件中设置以下属性:

# Keystore properties (client certificates)
javax.net.ssl.keyStore=C:/key.jks
javax.net.ssl.keyStorePassword=sample

建议7:调整JMeter SSL配置

在jmeter.properties中设置下面的属性,以调整JMeter处理SSL会话,协议和密码的方式:

要启用SSL会话共享:

https.sessioncontext.shared=true

设置默认HTTPS协议级别:

https.default.protocol=TLSv1.2

要启用多个HTTPS协议:

https.socket.protocols=TLSv1 TLSv1.2

要启用多个密码:

https.cipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256

要在测试期间保留SSL上下文:

https.use.cached.ssl.context=true

在http 4上设置重试次数

httpclient4.retrycount=1

建议#8:启用陈旧连接检查

为避免HTTP连接池出现问题,可能需要在JMeter中启用陈旧连接检查。在JMeter测试运行期间接收“Socket Closed”异常时,应使用此步骤。要启用过时连接检查,请在user.properties中设置以下属性:

http.connection.stalecheck$Boolean=true

建议#9:在Web服务器上启用HTTP Keep-Alive

Keep-Alive是HTTP协议的一个非常重要的特性。它允许客户端通过单个TCP连接发出多个HTTP请求。这提供了很大的性能提升,因为否则建立许多TCP连接将产生大量不必要的网络开销。

建议#10:检查负载均衡器配置

如果负载测试遇到负载均衡器前端的应用程序,请确保负载均衡器配置了足够的最大连接限制以处理预期负载。同样,验证负载平衡算法不会将过多的流量偏向一个或多个应用程序服务器实例,并且该负载充分分散在应用程序服务器后端之间。

转载于:https://www.cnblogs.com/a00ium/p/10263498.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jmeter,可以通过添加多个HTTP请求来模拟两个接口的串联压测。首先,你需要创建一个线程组,并在线程组添加两个HTTP请求,分别对应两个接口。在第二个接口的请求,你可以使用JSON提取器来提取第一个接口返回结果的某些值。JSON提取器的语法可以使用$.Name来提取根节点下的Name的值,或者使用$.list\[0\].type来提取list列表的第一个对象的type的值。\[1\] 此外,你还可以使用jmeter自带的功能来测试你的JSON提取器语法是否正确。\[2\] 在设置请求参数时,你可以使用变量语法${变量名}来设置第二个接口的参数。如果你需要使用一万名用户的数据进行压测,可以将这些用户的数据写入一个csv文件,并在jmeter设置csv数据文件,让jmeter自动读取文件的数据。\[1\] 另外,你还可以设置请求头,将需要的header字段依次写入其,并将需要读取文件数据的字段写成变量的形式。\[1\] 最后,你可以添加监听器来获取压测结果,并进行结果分析。压测结果的时间单位为ms,你可以参考相关文档来计算指标。\[1\] 如果你想将jmeter的界面语言永久变为文,你可以在jmeter的安装目录下的bin目录找到"jmeter.properties"文件,在文件的第37行后添加"language=zh_CN",保存后重新打开jmeter即可。\[3\] #### 引用[.reference_title] - *1* *2* [jmeter接口压测,压测场景:一万名用户同时请求两个活动接口,两个接口存在串联关系,第二个接口用到了第一...](https://blog.csdn.net/weixin_43587784/article/details/127617530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JMeter 接口测试、接口并发、压测 流程详解](https://blog.csdn.net/mcfnhm/article/details/118295800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值