区块链技术博客
www.b2bchain.cn

面试官:如何调查线上接口超时报警?求职学习资料

本文介绍了面试官:如何调查线上接口超时报警?求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

可以通过阿里巴巴开源的Arthas来分析超时原因, 常用的命令包括 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

可以通过阿里巴巴开源的Arthas来分析超时原因, 常用的命令包括 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

可以通过阿里巴巴开源的Arthas来分析超时原因, 常用的命令包括 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

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 面试官:如何调查线上接口超时报警?求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们