这篇文章主要介绍“调查线上接口超时报警的方法步骤”,在日常操作中,相信很多人在调查线上接口超时报警的方法步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”调查线上接口超时报警的方法步骤”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
常用的命令包括 dashboard 、 thread -n、watch、trace 、 tt 等命令。
trace: 可以实时输出各个子调用的执行时间, 输入参数,返回值,是否该调用有异常,可以通过 trace -h 查看具体参数含义 tt: 将某一次耗时调用提取,然后重放,可以通过 tt -h 查看具体参数含义
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命令输出耗时超过 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
到此,关于“调查线上接口超时报警的方法步骤”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。