码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记一次接口分析


    在偶然中发现一个接口耗时有点慢,用了4秒钟

    查询了下,这个接口做的事有点多,即有接口调用,又有很多的查询然后保存,所以单看代码或者时序图的话很难看出

    然后用了Arthas的分析了一下这个接口

    Arthas官网

    启动Arthas后选择要分析的项目,然后使用trace功能,trace的功能是输出方法内部调用路径,并输出方法路径上的每个节点上耗时,很符合我这个场景

    trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路

    开启trace

    trace com.*** method
    

    然后再次调用接口

    image-20220921173414923

    就可以看到这个接口下的调用链和耗时,很快就发现了耗时最高的接口,于是继续trace这个接口,重复以上步骤,最终发现耗时的地方


    竟然是两个插入方法耗时最久

    看了下表结构也没有很多索引,而且数据量也不大只有几万条,把sql复制到数据库中执行,也是正常的

    看了下代码,这两个插入是在循环中的,但是循环只有10多次,在本地测试了一下也是正常的

    而且本地的接口总耗时才3537ms

    用Arthas的dashboard看了下项目的资源情况

    发现堆快满了,而且只有100多m的内存,看了下启动参数,只给这个项目指定了128m的内存。。

    又看了下服务器内存,也快被用完了

    然后把这个项目移动资源比较足的服务器,并且把内存扩大到256m

    再次调用接口只用了1秒多,可看到资源对项目的影响

  • 相关阅读:
    MySQL进阶实战11,查询缓存
    [附源码]JAVA毕业设计高校学生社团管理(系统+LW)
    【数电】IEEE754浮点数
    高等数学啃书汇总重难点(五)定积分
    超800万辆「巨量」市场,谁在进攻智能驾驶「普及型」赛道
    char(10)中的10代表的是字符还是字节
    你的凭据不工作(Win10远程桌面Win10)详细解决路线
    LSF_SPAN
    【cf】CodeForces Round 905(Div.3)题解
    国运线,A股长期上升趋势线
  • 原文地址:https://www.cnblogs.com/aruo/p/16716741.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号