专栏首页云原生压测团队【项目实战-3】脚本存在遍历解析耗时操作,QPS压不上去
原创

【项目实战-3】脚本存在遍历解析耗时操作,QPS压不上去

【问题表现】

某项目接口压测中,发现加大并发后,QPS压不上去。

压测结果如图所示:

【问题分析与排查思路】

1.   QPS压不上去,猜测是链路某一环节出现了瓶颈。梳理整个压测链路:jmeter->clb->cvm。空跑一个无逻辑处理的接口,发现10台的client机器压测性能不如1台机器的性能,令人费解。怀疑是clb有问题。

  • 场景一:单台client--clb---40台rs--500并发: 2w qps:(压测工具jmeter)
  • 场景二:10台client--clb--40台rs--5000并发: 1.2wqps:(压测工具jmeter)

2.   从clb端排查问题,采用wrk工具,host+域名的方式压测,验证了多台client机器比单台机器性能好的问题,与之前空跑的接口压测结果不一致(后续解答)

3.   通过以上操作排除了clb的嫌疑后,对比wrk和jmeter 两种压测工具,查看后端rs的监控发现jmeter新建的连接比wrk少。进   行抓包分析,发现jmeter有6s耗时等待。

4.   通过压测链路往前推,被质疑是压测工具的问题。

查看jmeter 压测集群端的资源消耗,发现没有瓶颈点,只能仔细梳理jmeter脚本。去除压测脚本里多余的jmeter组件,只留下https请求进行压测,发现QPS上升。对比了两个压测脚本发现,之前的脚本存在逐字遍历response逻辑。

修改脚本后的压测结果:

5.   回到之前空跑无逻辑处理接口,10台client机器不如1台机器性能的问题。

分析如下:一开始空跑一个无处理逻辑的接口,发现耗时在几毫秒,然而对于Jmeter这个压测引擎来说:本身有一些相对重一点的数据统计与分析的逻辑,要把每个请求的数据入库。 这也就导致了10ms以下的接口,产生大量的日志数据入库出现积压。(jmeter 会统计每个请求的response里的逻辑,且放到Influxdb中)

目前采用k8s+jmeter的压测方案,10台slave机器的数据汇总到1台master,汇总的数据量很大,所以会出现qps出现下降的情况。

【总结】

在本次分析问题的过程中,依旧采用控制变量法来排查问题,最终定位问题到jmeter端。项目的接口返回的报文有上万个字符,逐个进行遍历解析,jmeter的资源被占用掉无法迅速的去处理请求,值得关注的是grafana统计的耗时其实是从jmeter发送请求到接收请求报文的这个时间,不包含jmeter自身操作的耗时,如返回值解析等操作。

在以后的压测中,要规范jmeter脚本的书写,避免‘埋坑’。

在本次的实践过程中,还发现了jmeter自身的问题,对于10ms以下的请求周期会出现瓶颈。

对于排查链路问题,空跑无逻辑处理接口也是一个很不错的选择呦~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【必看】社区文章目录

    Nanako
  • 社区精华文章目录

    小余同学
  • 卡哥带你实现存储引擎!

    之前在 刷题攻略登上榜首这篇文章中说过,Carl不仅写了刷题攻略,还写了很多优秀的开源项目。

    代码随想录
  • 迎接重生,微盟数据库全面上云纪实

    在经历了惨痛的黑天鹅事件以及激烈的数据恢复过程后,作为微盟DBA的我们进行了深刻的反省和自查,作为公司的核心资产,数据库也得到了前所未有的重视。如何保证数据安全...

    腾讯云数据库 TencentDB
  • 【项目实战-1】NAT网关的最佳实践

    项目某后台接口QPS出现周期性的掉坑现象。每一次耗时的峰值,都对应一次QPS掉坑。

    Nanako
  • Java面试:2021.05.06

    注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出Nu...

    夕梦
  • go实现的压测工具【单台机器100w连接压测实战】

    本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工...

    link1st
  • 一次Spring Boot性能优化的工作经验分享

    笔者刚入职新公司领导让针对api项目进行重构,由于当前系统用play框架写的加上历史遗留原因,造成当前的api项目难以维护以及部署。重构便成了迫在眉睫的事。由于...

    IT大咖说
  • 一文搞懂,性能测试指标评估方法

    在上一篇文章性能专题:一文搞懂性能测试常见指标中,已经介绍了,在开展性能测试时,各个维度的常见性能指标项有哪些。

    测试开发技术
  • 优化Postgres-x2 GTM

    Postgres-x2是一个基于pgsql、面向OTLP的分布式数据库,采用了shared-nothing的架构,目标是针对OLTP\OLAP应用能做到可扩展的...

    沃趣科技
  • 腾讯课堂停课不停学:业务后台实践

    | 导语 疫情爆发,腾讯发起“停课不停学”专项,腾讯课堂一下子被推到风口浪尖上,2天上线极速版,2周内支持同时在线人数超百倍增长,对整个后台挑战非常大。整整2个...

    王昂
  • Hive MetaStore 在快手遇到的挑战与优化

    导读:快手基于Hive构建数据仓库,并把Hive的元数据信息存储在MySql中,随着业务发展和数据增长,一方面对于计算引擎提出了更高的要求,同时也给Hive元数...

    create17
  • 【云+社区年度征文】TeamLeader如何Owner老系统?

    做互联网的童鞋们一定都有过这样的经历,看过很多架构书,看过很多架构师成长指南,看过很多优秀的案例分享以及讲座。所以当我们刚毕业的时候,对于大厂的认知一定都是这样...

    小诚信驿站
  • 【原创】腾讯面试官:线程池要设置多大

    有个朋友Hunter跟我聊,最近他参加腾讯的面试,在二面的时候被问到了关于线程池线程数目设置的一个问题。此处记录下这个问题的面试过程,以及后面关于此问题的理论方...

    王金龙
  • FunTester原创文章(升级篇)

    FunTester
  • 【2018手Q春节红包系列】春节排行榜性能优化小记

    这次优化,从接触学习压测工具开始,到昨天优化告一段落,断断续续持续了有3、4天左右。感谢团长、双太、drog、温总在优化过程中提供的帮助和建议!

    后台搬砖鹅
  • 全链路压测如何排障调优 — 先导篇

    我们团队保障了很多KA项目(第七次人口普查项目,广交会等)的后台稳定性,覆盖14亿中国人口,后台接口的并发量达到11万的QPS。在生产环境进行全链路压测的过程中...

    杨珂
  • 性能测试误差分析文字版-上

    在之前的文章中,我都提到过QPS计算的两种公式,今天特意来研究一下在固定线程模型下,两种统计公式误差问题。

    FunTester
  • 【操作指南】FAQ

    kubectl exec -it jmeter-influxdb-0 -- rm -rf /var/lib/influxdb/data

    杨珂

扫码关注云+社区

领取腾讯云代金券