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

接口性能优化日记

背景

功能冒烟演示的时候,发现一个接口的返回时候有时会执行5秒才返回,被测试提了一个问题。这个接口是我负责,所以需要我去处理。

过程

一开始,我不知道如何入手,于是我在一些可能会导致耗时的代码前后加上了log日志,打印耗时(比如http调用,mysql操作)。
然后被pm说了,他说可以通过“听云”查看接口性能。
我去,还有这么牛逼的系统吗!
登录"听云"后,我找到了我那个接口,可以看到io网络、code、sql、nosql的耗时,真的很牛逼。

回到正题,这个接口耗时5秒多,有5秒是耗费在了一个方法调用上(远程调用)。于是我就兴冲冲拍板,心想直接把这个调用改成异步不就得了!

我将这个远程调用方法改成了异步,然后提交代码。不久pm跟我说,你这样改,项目都被你改崩了。

我想:我去?异步还能崩?

pm:”这个远程调用,占了5秒,你整个接口耗时才5秒多,你即使把整个远程调用异步,你最多节省一百毫秒,这能解决问题吗?“

我想:”有道理啊,我这个蠢蛋!“

pm:”这个调用涉及到zookeeper单机,且服务器性能都很差,所以调用会很慢,你可以把它改成feign调用就好了!“

我想:”牛逼!“

总结

接口性能优化,我们本能会想到

  1. 现状:压测目前接口性能吞吐(知道性能到底多差)
  2. 定位:哪个步骤导致性能低
  3. 解决:针对问题进行解决
  4. 回归:重新压测,确认是否已经改好

其中解决的手段就是异步、缓存。
但我这次的问题就是异步、缓存都无法解决的,因为这个问题的耗时,占用整个接口耗时的99%。

有时候我们要多想!


http://www.kler.cn/a/327804.html

相关文章:

  • 汽车资讯新篇章:Spring Boot技术启航
  • 一文速学---红黑树
  • RK3568平台开发系列讲解(platform虚拟总线驱动篇)实验:点亮一个LED
  • VScode使用Batch Runner插件在终端运行bat文件
  • 【MySQL】RedHat8安装mysql9.1
  • Ubuntu22.04 安装mysql8 无法修改端口及配置的问题 坑啊~~~~
  • Java高级Day51-apacheDBUtils
  • mybatis-plus与xml结合使用
  • 17【Protues单片机仿真】基于51单片机的太阳能智能谷物翻晒机器人
  • Vue 技术进阶 day2 数据监视的原理、其他内置指令、自定义指令、生命周期、组件化、VueComponent构造函数
  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • leetcode力扣刷题系列——【座位预约管理系统】
  • Vue3实现mqtt的订阅与发布
  • 【论文解析】基于开源 Matrix 指令集扩展(矢量点积)的高性能 RISC-V 处理器“香山”(nanhu 版本)的 LLM 加速的研究
  • 828华为云征文|部署多功能集成的协作知识库 AFFiNE
  • mysql如何不使用窗口函数,去统计出入库情况
  • 全视通智慧养老护理呼叫求助,打造安心舒适的养老生活
  • JavaScript 可视化案例详解
  • 了解Webpack并处理样式文件
  • 黑马头条day5- 延迟任务精准发布文章
  • NVIDIA Hopper 架构深入
  • spring cache,Spring data redis
  • OpenCV视频I/O(5)视频采集类VideoCapture之从视频流中获取下一帧的函数grab()的使用
  • 【mod分享】山脊赛车无限高清重置mod,替换高清贴图和光影材质,可实现reshade光追
  • Oracle(145)如何进行数据库的日常维护?
  • Map put的过程