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

表象:

单接口负载测试,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回归正常。

更多交流关注公众号:猿桌派

最新文章

  1. 精品干货丨APP常用导航框架
  2. zookeeper集群配置与启动
  3. Linux SELinux命令
  4. spring获取bean的时候严格区分大小写
  5. 微信消息处理JAXP-sax解析
  6. MySQL之经典语句
  7. poj2001 Shortest Prefixes (trie)
  8. Java笔记(十二)……类中各部分加载顺序及存放位置问题
  9. Http 辅助类
  10. 基于visual Studio2013解决C语言竞赛题之1048打印矩阵
  11. 使用Jenkins进行持续集成ionic3项目
  12. 【English】20190313
  13. Python爱好者社区历史文章列表(每周append更新一次)
  14. 解决vue路由history模式刷新后404的问题
  15. Leapin' Lizards HDU - 2732 (恶心的建图。。)
  16. 利用NET HUNTER建立一个自动文件下载的网络接入点
  17. CSS边框-属性详解
  18. 微信小游戏5.2.2 没有xml支持库的问题解决
  19. numpy.zeros(np.zeros)使用方法--python学习笔记31
  20. Appium基础环境搭建(windows)---基于python

热门文章

  1. LeetCode 第三题--无重复字符的最长子串
  2. 多级反向代理java获取真实IP地址
  3. 迈向Angular 2
  4. 学习 lind 语 里的一些组件使用。
  5. 将DataTable数据转换成List泛型数据
  6. IIS 32位/64位 全局模式切换
  7. BBOTSTRAP
  8. TypeScript——基本类型
  9. Oracle数据库安装与卸载
  10. Kubernetes-Ingress资源详解