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回归正常。

目录
相关文章
|
6月前
|
测试技术
性能场景之压测策略设计
【2月更文挑战第19天】性能场景之压测策略设计
554 4
性能场景之压测策略设计
|
6月前
|
测试技术
软件测试中的QPS和TPS解析:以秒杀系统为例
软件测试中的QPS和TPS解析:以秒杀系统为例
279 0
软件测试中的QPS和TPS解析:以秒杀系统为例
|
6月前
|
分布式计算 关系型数据库 MySQL
DataWork数据处理问题之调整并发数量如何解决
DataWork数据处理是指使用DataWorks平台进行数据开发、数据处理和数据治理的活动;本合集将涵盖DataWork数据处理的工作流程、工具使用和问题排查,帮助用户提高数据处理的效率和质量。
|
4月前
|
缓存 开发框架 监控
优化后端服务响应时间的关键策略与实践
在当今数字化时代,优化后端服务响应时间至关重要。本文探讨了几种关键策略和实践方法,帮助开发团队提高系统性能和用户体验。通过合理的资源分配、技术选型和代码优化,可以有效缩短响应时间,提升系统的整体效率和稳定性。【7月更文挑战第5天】
116 0
|
4月前
|
机器学习/深度学习 Java Serverless
函数计算产品使用问题之如何降低函数计算中的并发以解决流控错误
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
负载均衡 Java Serverless
函数计算产品使用问题之如何查看函数计算的QPS(每秒查询率)
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
Dubbo Java 测试技术
性能基础之浅谈常见接口性能压测
【4月更文挑战第26天】性能基础之浅谈常见接口性能压测
104 1
性能基础之浅谈常见接口性能压测
|
6月前
|
存储 缓存 负载均衡
优化服务器响应时间的方法如下
【4月更文挑战第25天】
105 5
|
6月前
|
测试技术
PTS压测问题之压测资源准备慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
|
Serverless
函数计算减少冷启动对性能的影响
函数计算减少冷启动对性能的影响
374 1