成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

記一次線上接口請(qǐng)求慢問題分析

IT那活兒 / 1018人閱讀
記一次線上接口請(qǐng)求慢問題分析
最近發(fā)現(xiàn)線上系統(tǒng)有個(gè)頁(yè)面訪問非常緩慢,頁(yè)面打開需要20S左右,抽空優(yōu)化了一下,順便記錄一下分析過程。
首先在慢頁(yè)面打開F12,查看訪問慢的請(qǐng)求如下圖,請(qǐng)求地址為:/modelManage/overviewPage/getDrillDownList,目前的接口請(qǐng)求時(shí)間為17.6S。

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


END


更多精彩干貨分享

點(diǎn)擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129910.html

相關(guān)文章

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

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

    Alliot 評(píng)論0 收藏0
  • 記一線上bug處理-mybatis一級(jí)緩存引起

    摘要:?jiǎn)栴}線上定時(shí)任務(wù)計(jì)算出的金額不對(duì)定位問題查看日志好像也執(zhí)行了但是金額為什么和數(shù)據(jù)庫(kù)的表里的不一致再查整個(gè)的定時(shí)任務(wù)日志日切日期 問題: 線上riskProvision定時(shí)任務(wù),計(jì)算出的金額不對(duì) 定位問題: 查看日志 4.13 riskProvision 2017-04-13 01:10:00.009 [org.springframework.scheduling.quartz....

    sean 評(píng)論0 收藏0
  • 線上問題排查所引發(fā)的思考

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

    levy9527 評(píng)論0 收藏0
  • 線上問題的排查解決過程

    摘要:排查異常日志,發(fā)現(xiàn)沒有該問題存在。測(cè)試功能正常,沒有重現(xiàn)線上問題。解決問題原因定位好了,剩下的就是如何解決了。兩個(gè)方案修改線上配置該上實(shí)施難度系數(shù)高,因?yàn)楣臼褂玫慕y(tǒng)一發(fā)布部署平臺(tái),開發(fā)人員無(wú)服務(wù)器操作權(quán)限。 問題 XX系統(tǒng)中,一個(gè)用戶需要維護(hù)的項(xiàng)目數(shù)過多,填寫的任務(wù)數(shù)超多,產(chǎn)生了一次工時(shí)保存中,只有前面一部分的xx數(shù)據(jù)持久化到數(shù)據(jù)庫(kù),后面的數(shù)據(jù)沒有保存。 圖1 showImg(htt...

    宋華 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<