Qps从300到1500的优化过程

简介: 实际案例

最近压测一项目,遇到的性能问题比较典型,过程记录下来,给大家做定位调优参考;

表象:

单接口负载测试,qps最高到300,响应时间200ms,应用cpu达到90%以上,8c机器,写到这里可能有部分同学就想说:处理能力还可以,不行就加机器,扩节点!

当然这是一种解决方案,但我认为如果直接这么去做,这是一种最low的方案,而且并不能发现本质问题;回到刚刚说的,我仅仅描述了应用服务器的状态,从完整的性能测试来看,整个链路各个指标都需要监控,把链路撸了一遍之后,应用到数据层流量也是较大的。

从监控中发现了这两个问题,继续看应用cpu,查看部署细节,该服务器部署了约10个docker节点,查看各个docker节点状态,其中一台达到623.59%(*核数)。

找到排查重点,进入相关容器,jstat查看gc状态,ygc可以达到1s三次,也是可以的,刚刚还说了啥,流量,Iftop后发现主要集中在应用跟redis服务器交互,从上面描述看,我们可以总结应用获取到redis大量的数据,导致流量较高,且大量数据会频繁的ygc会导致应用cpu的飙升,这么解释没毛病,道理上是通的,但这只是你的猜测,还要去做进一步验证,说了大量数据,那是什么业务的数据,在不做代码走读的情况下,我一般就dump,获取cpu消耗热点方法,dump到文件中发现用户信息中带大量优惠券的jedis方法。

ok,到了这一步问题基本就已经很明朗了,跟开发确认后,确实业务层面获取了大量无效优惠券信息导致,开发进行业务层过滤后,qps达到1500,网络,cpu回归正常。

目录
相关文章
|
2月前
|
测试技术
性能场景之压测策略设计
【2月更文挑战第19天】性能场景之压测策略设计
306 4
性能场景之压测策略设计
|
4月前
|
测试技术
软件测试中的QPS和TPS解析:以秒杀系统为例
软件测试中的QPS和TPS解析:以秒杀系统为例
110 0
软件测试中的QPS和TPS解析:以秒杀系统为例
|
3月前
|
分布式计算 关系型数据库 MySQL
DataWork数据处理问题之调整并发数量如何解决
DataWork数据处理是指使用DataWorks平台进行数据开发、数据处理和数据治理的活动;本合集将涵盖DataWork数据处理的工作流程、工具使用和问题排查,帮助用户提高数据处理的效率和质量。
44 4
|
14天前
|
Dubbo Java 测试技术
性能基础之浅谈常见接口性能压测
【4月更文挑战第26天】性能基础之浅谈常见接口性能压测
16 1
性能基础之浅谈常见接口性能压测
|
17天前
|
存储 缓存 负载均衡
优化服务器响应时间的方法如下
【4月更文挑战第25天】
28 5
|
8月前
|
存储 前端开发
我对请求做了个性能小优化,提升了50%的页面性能
我对请求做了个性能小优化,提升了50%的页面性能
44 0
|
10月前
|
Serverless
函数计算减少冷启动对性能的影响
函数计算减少冷启动对性能的影响
317 1
|
SQL 运维 监控
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
353 0
redis瞬时查询返回量过多导致出口流量打满,影响系统整体响应时间
|
存储 缓存 数据库
百万QPS系统的缓存实践
标题有些吸引眼球了,但并不浮夸,甚至还会远远超过百万,现在的平均响应时间在1ms内,0.08ms左右 如此高的QPS,如此低的AVG,为什么会有如此效果,关键点可能就在多级缓存上 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流
525 0
百万QPS系统的缓存实践
|
缓存 算法 Java
亿级流量电商系统JVM模型参数二次优化
亿级流量电商系统JVM模型参数二次优化
166 0
 亿级流量电商系统JVM模型参数二次优化