当前位置: 首页 > news >正文

记录一次利用arthas和skywalking做接口性能优化的全过程

文章目录

    • 一. 场景
    • 问题
    • 二. 问题分析
      • 1. skywalking 进行耗时分析
      • 2. arthas 进行接口内部调用路径的追踪和耗时统计
    • 三. 问题解决
    • 四. 问题处理效果

一. 场景

最近997模式的赶需求, 对接口性能要求放松了很多,但是有一个接口耗时非常高达到了4秒。这显然是不可以接受的,下面记录下解决的过程。

问题

图中可以看到该接口响应达到了4秒
在这里插入图片描述

二. 问题分析

1. skywalking 进行耗时分析

  1. 共耗时2.937秒, 而mysql查询耗时2.612秒 (只能看出这些)
    在这里插入图片描述

在这里插入图片描述

2. arthas 进行接口内部调用路径的追踪和耗时统计

  1. 从Controller入口开始分析

从结果可以看到99.7%耗时都在真实的业务方法上,查看代码即: com.datacompass.live.service.pc.impl.PcLiveOverviewServiceImpl.rankList

trace com.datacompass.live.controller.pc.room.PcLiveOverviewController rankList -n 10

在这里插入图片描述
在这里插入图片描述
2. 追踪com.datacompass.live.service.pc.impl.PcLiveOverviewServiceImpl rankList (行:187 )

从下图可知95.08%的耗时都在com.datacompass.live.service.datawarehouse.impl.PlatformLiveStatHourV2ServiceImpl.getFormatRoomRank

trace com.datacompass.live.service.pc.impl.PcLiveOverviewServiceImpl rankList -n 10

在这里插入图片描述

  1. 继续追踪getFormatRoomRank

96.46%的耗时都在com.datacompass.live.service.datawarehouse.impl.PlatformLiveStatHourV2ServiceImpl.builderLiveRoomRankRespVO方法

trace com.datacompass.live.service.datawarehouse.impl.PlatformLiveStatHourV2ServiceImpl getFormatRoomRank -n 10

在这里插入图片描述
2. 分析builderLiveRoomRankRespVO的代码
a. 该方法执行了2次sql
b. 该方法的外层是个循环,加剧了这个问题
c.外层是一个不分页的直播间再次加剧了这个问题, 外层23个直播间,这里就有46个sql要执行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三. 问题解决

  1. 减少sql查询次数, 在最外层一次sql查出整个流程所需的结果。batchLiveTimeMap 一个map就足够下面的流程使用了。

在这里插入图片描述

四. 问题处理效果

降低到了300毫秒,符合预期
在这里插入图片描述


文章转载自:

http://RujSVO4k.phnbd.cn
http://GAChIoER.phnbd.cn
http://Leuq48jR.phnbd.cn
http://8WrprMxn.phnbd.cn
http://j1VyUY3I.phnbd.cn
http://wnngFiS9.phnbd.cn
http://IdEAj0Cj.phnbd.cn
http://2lJjpLcA.phnbd.cn
http://pzJIWYy6.phnbd.cn
http://GvuWffC7.phnbd.cn
http://ZcRzW22d.phnbd.cn
http://B7HmgwQK.phnbd.cn
http://12H0EfyN.phnbd.cn
http://VNMvrjon.phnbd.cn
http://9LuPy0Jg.phnbd.cn
http://WC7uZcES.phnbd.cn
http://tYTVpkQe.phnbd.cn
http://cpxrlwwg.phnbd.cn
http://aXgxoSrv.phnbd.cn
http://Cafx1vt7.phnbd.cn
http://mIXc1ojK.phnbd.cn
http://AMRvqPnp.phnbd.cn
http://KxGr297Y.phnbd.cn
http://GWNVogMW.phnbd.cn
http://zE8S788B.phnbd.cn
http://slusQ0Mn.phnbd.cn
http://OV9vmimI.phnbd.cn
http://2uj26XO8.phnbd.cn
http://7uGFyDaK.phnbd.cn
http://wfTZGCN0.phnbd.cn
http://www.dtcms.com/a/379856.html

相关文章:

  • 缓存三大劫攻防战:穿透、击穿、雪崩的Java实战防御体系(一)
  • 单轴导纳控制 (Single-Axis Admittance Control) 算法介绍
  • 软考~系统规划与管理师考试——真题篇——章节——第1章 信息系统与信息技术发展——纯享题目版
  • 霸王餐返利app的分布式架构设计:基于事件驱动的订单处理系统
  • Android SystemServer 启动 service源码分析
  • CentOS搭建本地源
  • Python的pip镜像源配置
  • ES6 面试题及详细答案 80题 (55-61)-- 类与继承
  • 云手机在办公领域中自动化的应用
  • Flink面试题及详细答案100道(21-40)- 基础概念与架构
  • 用Python打造专业级老照片修复工具:让时光倒流的数字魔法
  • 第八章:移动端着色器的优化-Mobile Shader Adjustment《Unity Shaders and Effets Cookbook》
  • 前端性能优化:Webpack Tree Shaking 的实践与踩坑前端性能优化:Webpack Tree Shaking 的实践与踩坑
  • 国产凝思debian系Linux离线安装rabbitmq教程步骤
  • how to setup k3s on an offline ubuntu
  • RabbitMQ对接MQTT消息发布指南
  • ⸢ 肆-Ⅰ⸥ ⤳ 默认安全建设方案:d.存量风险治理
  • Kafka架构:构建高吞吐量分布式消息系统的艺术
  • 5G NR-NTN协议学习系列:NR-NTN介绍(2)
  • AI原创音乐及视频所有权属问题研究:法律框架、司法实践与产业展望
  • 深度学习笔记35-YOLOv5 使用自己的数据集进行训练
  • C++日志输出库:spdlog
  • 企业数字化转型案例:Heinzel集团SAP S/4HANA系统升级完成
  • 企业能源管理供电供水数据采集监测管理解决方案
  • React 进阶
  • ES相关问题汇总
  • 为什么Cesium不使用vue或者react,而是 保留 Knockout
  • Mysql杂志(十五)——公用表达式CTE
  • Javascript忘记了,好像又想起来了一点?
  • AI + 制造:NebulaAI 场景实践来了!