千家信息网

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

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要介绍"调查线上接口超时报警的方法步骤",在日常操作中,相信很多人在调查线上接口超时报警的方法步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"调查线上接口超
千家信息网最后更新 2025年01月25日调查线上接口超时报警的方法步骤

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

常用的命令包括 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

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

0