调查线上接口超时报警的方法步骤

发布时间:2021-10-13 13:32:58 作者:iii
来源:亿速云 阅读:149

这篇文章主要介绍“调查线上接口超时报警的方法步骤”,在日常操作中,相信很多人在调查线上接口超时报警的方法步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”调查线上接口超时报警的方法步骤”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

常用的命令包括 dashboard 、 thread -n、watch、trace 、 tt 等命令。

trace: 可以实时输出各个子调用的执行时间, 输入参数,返回值,是否该调用有异常,可以通过 trace -h 查看具体参数含义 tt: 将某一次耗时调用提取,然后重放,可以通过 tt -h 查看具体参数含义

第一步:trace定位耗时代码:

trace命令输出耗时超过 900 毫秒 的调用

trace com.kuaikan.comicbuy.repository.impl.ComicBuyRepositoryImpl getAllComicOrderFromDB  '#cost>900'  //查看耗时的调用路径
 
watch  com.kuaikan.comicbuy.dao.comicbuy.ComicOrderMapper getHadPurchasedComicNumByTopicId {params,returnObj}  -x 2   '#cost>10' //获取具体耗时的入参

输出结果:

arthas@25316]$ trace com.kuaikan.comicbuy.repository.impl.ComicBuyRepositoryImpl getAllComicOrderFromDB  '#cost>900'
Press Q or Ctrl+C to abort.
Affect(class-cnt:2 , method-cnt:1) cost in 786 ms.
`---ts=2020-03-27 14:08:28;thread_name=DubboServerHandler-10.66.2.100:20893-thread-380;id=344;is_daemon=true;priority=5;TCCL=org.springframework.boot.loader.LaunchedURLClassLoader@533377b
    `---[954.270866ms] com.kuaikan.comicbuy.repository.impl.ComicBuyRepositoryImpl:getAllComicOrderFromDB()
        +---[0.010746ms] com.kuaikan.comicbuy.bean.ComicOrder:getTableNameByUserId() #376
        // 代码里面是在循环中执行的ComicOrderMapper:getComicOrderByUserId,
        // count=18表示循环的次数,total是总的执行时间,min是循环中最小的执行时间,max是最大执行时间。
        +---[min=3.061773ms,max=272.769328ms,total=854.625477ms,count=18] com.kuaikan.comicbuy.dao.comicbuy.ComicOrderMapper:getComicOrderByUserId() #382
 
        +---[min=0.001283ms,max=0.006587ms,total=0.036144ms,count=17] com.google.common.collect.Iterables:getLast() #383
        +---[min=0.001431ms,max=0.003022ms,total=0.032525ms,count=17] com.kuaikan.comicbuy.bean.ComicOrder:getId() #383
        +---[0.001445ms] com.google.common.collect.Lists:partition() #395
        +---[2.349703ms] com.kuaikan.comicbuy.dao.comicbuy.ComicOrderMapper:getComicOrderBatchIdsList() #396
        +---[min=2.27E-4ms,max=0.479048ms,total=7.025685ms,count=6736] com.kuaikan.comicbuy.bean.ComicOrder:getProductType() #402
        `---[min=8.2E-5ms,max=0.150606ms,total=5.636961ms,count=6736] com.kuaikan.comicbuy.bean.ComicOrder:getProductType() #403

第二步 : tt命令重放耗时调用

这一步的目的是为了判断,耗时调用是否和特定输入参数有关系 tt命令输出耗时超过 500毫秒 的调用

tt   -t com.kuaikan.comicbuy.repository.impl.ComicBuyRepositoryImpl getAllComicOrderFromDB  '#cost>500'

输出结果:

INDEX   TIMESTAMP          COST(ms)  IS-RET  IS-EXP  OBJECT        CLASS                         METHOD
------------------------------------------------------------------------------------------------------------------------------
 1014    2020-03-27 14:40:  576.2674  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         37                 15
 1015    2020-03-27 14:40:  852.3366  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         45                 85
 1016    2020-03-27 14:41:  894.5568  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         08                 44
 1017    2020-03-27 14:41:  612.3478  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         30                 68
 1018    2020-03-27 14:42:  1162.434  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         00                 85
 1019    2020-03-27 14:42:  1194.843  true    false   0x79476a4e    ComicBuyRepositoryImpl        getAllComicOrderFromDB
         00                 248

第三步: 重复超时的请求

INDEX = 1018 的调用执行了1162.434毫秒,这个肯定是已经报RPC超时了.

查看某一个的详细 tt -i 1018

重放这个请求: tt -i 1018 -p

到此,关于“调查线上接口超时报警的方法步骤”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. SpringBoot设置接口超时时间的方法
  2. 使用docker构建golang线上部署环境的步骤详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:如何理解ngin代理访问图片多个项目,使用部署之后404 500的问题

下一篇:如何使用scrcpy投屏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》