此文已由做者翟曜受權網易雲社區發佈。
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入門初探