国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

記一次線上接口請求慢問題分析

IT那活兒 / 1005人閱讀
記一次線上接口請求慢問題分析
最近發現線上系統有個頁面訪問非常緩慢,頁面打開需要20S左右,抽空優化了一下,順便記錄一下分析過程。
首先在慢頁面打開F12,查看訪問慢的請求如下圖,請求地址為:/modelManage/overviewPage/getDrillDownList,目前的接口請求時間為17.6S。

通常來說,當我們發現應用的某個接口響應比較慢,這時候想要找到代碼中耗時的部分,比較容易想到的是在接口鏈路的IO操作上下游打印時間日志,再根據幾個時間點的日志算出耗時長的IO操作。
使用這種方式,加日志需要發布,既繁瑣又低效。這里就用阿里巴巴開源的 Java 診斷工具 Arthas來分析下,除了分析耗時,還可以打印調用棧、方法入參及返回,類加載情況,線程池狀態,系統參數等。其實現原理是解析JVM在操作系統中的文件,大部分操作是只讀的,對服務進程沒有侵入性。
首先,啟動arthas。
在出現的列表中選擇要跟蹤的服務進程,看到如下界面說明attach成功。
使用sc命令找到待分析的Controller類完整的路徑和名稱。根據請求地址/modelManage/overviewPage匹配到對應Controller。
使用sm命令查詢類的方法信息,根據請求名getDrillDownList匹配到Controller具體方法。
拿到Controller類地址和方法名后,通過trace命令查看整個調用鏈路上的調用時間,觀察到方法內調用service方法占用了大部分時間。
繼續trace該service方法的調用鏈路,觀察到mapper部分占用了大部分耗時。
由于mapper部分是對數據庫的操作,于是懷疑sql性能有問題,找研發拿到該sql語句。
將該語句直接放到pl/sql執行,用時8.9S,確認是sql執行慢,由于涉及分頁需要查詢count(*)總條數,所以該語句執行了2次,時間剛好耗時18S左右,問題確定。
簡單分析下該sql,結構并不復雜,只針對單表進行查詢,表數據量有830多萬。
作為開發人員,先簡單利用PL/SQL Developer的執行計劃評估SQL語句的性能。這里看到的執行計劃,只是SQL運行前可能的執行方式,實際運行時可能因為軟硬件環境的不同而有所改變,而且cost高的執行計劃,不一定在實際運行起來,速度就一定差,我們這里只做一個參考。這里觀察到該sql的where條件走了全表掃描,占用了大部分耗費時間。
查看該表針對條件中oper_date字段以及to_char(oper_date)都建了索引,而SQL中卻并未使用上該索引。分析SQL語句發現,針對oper_date字段做了多次類型轉換,導致了索引失效。
嘗試將該條件的強制類型轉換替換為其他方式,再次查看執行計劃,發現已經可以走索引了,執行耗時問題也消失了。
將該問題反饋給研發優化,優化完成后該請求訪問時間降到毫秒級別,頁面體驗感提升明顯,問題解決。


END


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129910.html

相關文章

  • 記一線上頻繁FGC的事件和解決方式

    摘要:直接顯示了一個疑似內存泄漏的問題。然后分析文件給出的信息,發現一個叫的類。文件里面說的內存泄漏的大概的意思就是說,這個類里面的存放的東西太多了,爆掉了。修改了代碼將調用的地方改成了單例。修改完線上跑了一段日子,后來也沒有出現過這樣的問題。 問題描述: ????早上去公司上班,突然就郵件一直報警,接口報異常,然后去查服務器的運行情況,發現java的cpu爆了.接著就開始排查問題 問題解決...

    Alliot 評論0 收藏0
  • 記一線上bug處理-mybatis一級緩存引起

    摘要:問題線上定時任務計算出的金額不對定位問題查看日志好像也執行了但是金額為什么和數據庫的表里的不一致再查整個的定時任務日志日切日期 問題: 線上riskProvision定時任務,計算出的金額不對 定位問題: 查看日志 4.13 riskProvision 2017-04-13 01:10:00.009 [org.springframework.scheduling.quartz....

    sean 評論0 收藏0
  • 線上問題排查所引發的思考

    摘要:直到有一天你會碰到線上奇奇怪怪的問題,如線程執行一個任務遲遲沒有返回,應用假死。正好這次借助之前的一次生產問題來聊聊如何排查和解決問題。本地模擬上文介紹的是線程相關問題,現在來分析下內存的問題。盡可能的減少多線程競爭鎖。 showImg(https://segmentfault.com/img/remote/1460000015568421?w=2048&h=1150); 前言 之前或...

    levy9527 評論0 收藏0
  • 線上問題的排查解決過程

    摘要:排查異常日志,發現沒有該問題存在。測試功能正常,沒有重現線上問題。解決問題原因定位好了,剩下的就是如何解決了。兩個方案修改線上配置該上實施難度系數高,因為公司使用的統一發布部署平臺,開發人員無服務器操作權限。 問題 XX系統中,一個用戶需要維護的項目數過多,填寫的任務數超多,產生了一次工時保存中,只有前面一部分的xx數據持久化到數據庫,后面的數據沒有保存。 圖1 showImg(htt...

    宋華 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<