此文已由做者翟曜受权网易云社区发布。
java
欢迎访问网易云社区,了解更多网易技术产品运营经验。web
最近在跟进考拉中间件产品:分布式调用链路跟踪系统trace的测试。spring
昨天,trace收到一个业务方反馈:接入trace后,工程启动变慢。tomcat
针对这个问题,一方面,当前中间件团队内部的测试流程是基于demo工程进行测试,测试完毕后再推广业务接入,进行业务测试的验证。demo工程的复杂度跟实际业务工程相比,差异较大,demo应用的启动速度自己较快,因此测试过程当中未能关注到明显差异。另外一方面,也提醒了本身,要作一名严谨的qa,这类问题不该放过,发现了就要引发关注,而且需归入后续的常规测试范围中,每一个版本升级都应输出该项测试的比对结果。安全
那么,如何获取应用启动时间呢?服务器
咱们如今的应用都是经过ndp部署,应用类型主要有两类:java web和java app。app
第1类:Java web应用类型的启动时间分布式
这个比较容易获取,直接查看tomcat日志,会比较醒目的打印出:测试
即该应用的启动耗费时间。.net
第2类:java app应用类型的启动时间
测试demo中,该类型工程基于spring boot启动,日志中貌似没有明确的时间能够获取。
要获取启动耗费时间,有启动开始时间和启动结束时间便可。
启动开始时间,比较容易获取,能够约等于restart脚本开始执行start的时间or应用日志的第一条记录产生的时间。
启动结束时间,如何获取?能够约等于Spring容器加载完成的时间,那么能够利用监听ContextRefreshedEvent事件来获取这个结束时间。以下:
在监听器的onApplicationEvent中打印出“结束时间”,即可以根据“spring start success“关键字搜索到启动结束时间。
有了启动开始和启动结束时间,启动耗费时间能够获得了。
每次去服务器上人肉操做人肉查看,也比较费时。
那么能够将获取启动耗费时间自动脚本化,而后经过jenkins来触发执行。
最终获取并输出的测试结果以下:
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 appium封装显示等待Wait类和ExpectedCondition接口
【推荐】 Puppeteer入门初探