前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6轮Jmeter压测对比keep-alive的影响

6轮Jmeter压测对比keep-alive的影响

作者头像
muntainyang
发布2020-10-23 11:17:06
4.2K1
发布2020-10-23 11:17:06
举报
文章被收录于专栏:IT测试前沿

6轮Jmeter压测对比keep-alive的影响

笔者在项目性能测试中,遇到过一次大数据量查询接口,接口响应时间以毫秒计。

测试人员使用Jmeter进行压测,最初的压测结果是这样的:

Transactions per Second

TPS非常不稳定,即使压3分钟也是上下波动,错误率为11%左右。

Average:425.5ms Max: 3212 ms Min: 208ms 平均TPS:105

失败原因:大部分为响应超时,有的请求没有收到,或调用接口失败。

测试人员和开发人员都非常郁闷,为什么多次压测都是这样波动,压到一定时间(1分多钟)必定波动。刚开始怀疑Jmeter脚本设置问题、怀疑后台程序问题、怀疑网络丢包,都无结果。后来考虑到项目接口是短连接,经过讨论和结合实验数据,定位到Jmeter和server端的keep-alive设置应该是影响最大。

第一次试验:Jmeter设置keep-alive,Server端不设置(默认无此关键字)

第二次试验:Jmeter设置keep-alive,Server端设置为Close

第三次试验:Jmeter不设置keep-alive,Server端不设置(无此字段)

第四次试验:Jmeter不设置keep-alive,Server端设置为Close

第五次试验:验证调用消息队列的后台进程速度的影响,Jmeter不设置keep-alive,Server端设置Close

后台读取消息队列进程的延时设置为每小于100ms的响应人为加100ms延时,发现还有调用接口失败,连接超时。经过几次试验设置为后面的每小于400ms的响应人为加100ms为最佳。

经过以上实验,结合平台的延时设置,得到了最佳实践。

最佳实践:服务进程时延设置每<400ms加100ms,两端都取消keep-alive,100用户并发限制200TPS

总共执行359157次,失败208次,成功率已经超过99.9%。

测试给出的配置结论:

关于Keep-Alive

第四方案(最差)

客户端keep-alive,服务器端不设置,是最不稳定的。TPS周期性波动。

第三方案

客户端keep-alive,服务器端设置关闭,稳定度排第三。波动比较早。

第二方案

客户端取消keep-alive,服务器端也不设置,比较稳定,TPS平稳。

第一方案(最佳)

客户端取消keep-alive,服务器端设置关闭,最稳定,TPS平稳。

编者注:

Keep-Alive模式:Connection: Keep-Alive,这个键值对的作用是让HTTP保持连接状态,因为HTTP协议采用“请求-应答”模式,当使用普通模式,即非 Keep-Alive 模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP 协议为无连接的协议);当使用 Keep-Alive 模式时,Keep-Alive功能使客户端到服务器端的连接持续有效。

在HTTP 1.1版本后,默认都开启Keep-Alive模式,只有加入加入 Connection: close才关闭连接,当然也可以设置Keep-Alive模式的属性,例如 Keep-Alive: timeout=5, max=100,表示这个TCP通道可以保持5秒,max=100,表示这个长连接最多接收100次请求就断开。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT测试前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一次试验:Jmeter设置keep-alive,Server端不设置(默认无此关键字)
  • 第二次试验:Jmeter设置keep-alive,Server端设置为Close
  • 第三次试验:Jmeter不设置keep-alive,Server端不设置(无此字段)
  • 第四次试验:Jmeter不设置keep-alive,Server端设置为Close
  • 第五次试验:验证调用消息队列的后台进程速度的影响,Jmeter不设置keep-alive,Server端设置Close
  • 最佳实践:服务进程时延设置每<400ms加100ms,两端都取消keep-alive,100用户并发限制200TPS
  • 测试给出的配置结论:
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档