首頁  >  文章  >  Java  >  阿里雲ARMS診斷Java應用卡頓問題實戰

阿里雲ARMS診斷Java應用卡頓問題實戰

php是最好的语言
php是最好的语言原創
2018-08-09 16:55:071602瀏覽

阿里雲ARMS診斷Java應用卡頓問題實戰

別慌,這只是一張貼圖

除了404,最讓網友們心塞的可能就是這張圖了。

歡迎網友們在「阿里巴巴中間件」公眾號後台留言,把你在網路上看到的心塞的事情發給我們,不限於文字、圖片和語音,沒准我們會推一期「互聯網心塞集錦」喔。

根據相關研究顯示:當頁面載入時間從 1 秒到 3 秒,跳出的機會增加了30%左右。 1s到5s的機會增加到90%,如果你的網站需要10s的加載,跳出的機會將會超過120%。 (這裡的120%不是指來10個人,走12個人,是用戶流失增長率的意思)所以,在這個「用戶體驗為王」的時代,應用效能監控已經成為維運管理的重中之重。

一、找出導致 「慢」 的原因。

網站卡頓、頁面載入慢是網路應用程式常見的問題之一,這類問題的排查和解決並不容易,會花費維運人員大量的時間和精力。通常原因有三:

» 應用程式太長,無從下手。

從前端頁面到後台網關,從Web應用伺服器到後台資料庫,任何一個環節的問題都有可能導致請求整體卡頓,到底是前端資源載入過慢?還是資料庫出了問題?還是新發布的服務端程式碼有效能問題?出現問題的原因五花八門。

採用「微服務」架構的應用,連結更加複雜。不同組件可能由不同的團隊、人員分別維護,加劇了問題檢查的難度。

» 日誌不全或品質欠佳,現場缺失。

應用程式日誌無疑是排查線上問題的神器,但出現問題的位置往往無法預期,發生了問題通常會發現日誌資訊不全,因為我們不可能在每一個有可能出現問題的地方列印紀錄.

「慢」的定義偏主觀,「慢」有時候往往也是偶發現象。真正要捕捉到「慢」的那一行程式碼,我們往往需要記錄每一次調用,不放過每一行程式碼,但這樣的做法代價太大。

» 監控不足,出現問題為時已晚。

業務發展快、迭代速度更快,會導致業務系統頻繁修改介面、增加依賴、程式碼品質惡化。如果沒有一個完善的監控體系,能夠對應用的每個介面的效能進行全自動的監控,對出現問題的呼叫進行自動的記錄,等用戶回饋問題再來解決,本身就已經太遲了。

二、如何1 分鐘定位「慢」 問題

業務即時監控服務ARMS(Application Real-Time MonitoringService)是一款阿里雲應用效能管理(APM)類別的全鏈路監控產品。 ARMS提供了針對Java 應用監控和診斷、車聯網即時監控、零售業即時監控、用戶體驗監控等場景下全方位的監控功能,包括前端監控、應用監控和自訂監控等功能,快速建立即時的業務監控能力。

第一步:安裝Java探針(如果您的應用程式託管於EDAS,甚至可以跳過這一步驟 )

• 開通ARMS,並建立應用程式。

• 下載Java探針包並解壓縮。

• 在Java應用程式啟動腳本中增加-javaagent:/{user.workspace}/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar-Darms.licenseKey=xxx -Darms.appId=xxx ( appId和licenseKey根據頁面分配的資訊填寫)

• 開啟ARMS頁面,資料開始上報,驗證Java探針安裝成功。

阿里雲ARMS診斷Java應用卡頓問題實戰

第二步:在應用程式概覽中發現「慢」可疑線索

進入ARMS應用拓撲圖。在應用程式概覽中我們能夠明顯地看到今天系統中有「慢SQL」5次。

阿里雲ARMS診斷Java應用卡頓問題實戰

第三步:瀏覽並發現「慢介面」

點擊介面列表,我們能夠一眼看到這個應用程式提供的所有介面以及這個介面的呼叫次數和耗時,當然,這些介面都是ARMS的探針自動在程式中發現的,無需做任何配置。

在這些介面中,「慢」介面會被明顯標示出來。我們很明顯地發現了可疑的慢接口。

選取左側的呼叫次數最多的」慢」接口,我們可以從右側看到這次呼叫明顯是「慢」在資料庫的呼叫上。

阿里雲ARMS診斷Java應用卡頓問題實戰

第四步:到底「慢在哪一行程式碼」? 一鍵定位原因!

• 光看到介面的耗時還不夠,我們需要精確定位「慢」到底出現在哪一行程式碼。

• 點擊“介面快照”,可以看到這個介面對應的所有介面的快照,快照是對一次呼叫的全鏈路呼叫的完整記錄。 ARMS探針將以非常小的效能損耗記錄每個呼叫所經過的程式碼及耗時,幫助您精確定位「慢」問題。

阿里雲ARMS診斷Java應用卡頓問題實戰

• 我們點選某一個呼叫快照的TraceId,展開即可查看到這次呼叫具體「慢」在哪一行。從上圖我們可以清楚地看到,在這次耗時705毫秒的呼叫中,大部分的時間都消耗在了"SELECT * FROMl_employee"這次SQL呼叫中,這明顯是一次全表掃描的操作!

• 至止,我們已經明確地發現了系統中的一個慢調用的錯誤根因。並且有充分的依據來指導我們下一步的程式碼最佳化工作。我們還可以回到調用接口列表,再逐一打開列表中其他“慢”的調用,逐一解決,相信在ARMS的幫助下,您的網站從此可以遠離卡頓的困擾,給用戶提供更加流暢的體驗。

第五步:防患於未然-- 設定告警

#當然,您可以在ARMS的告警設定中對某一個介面或全部介面設定告警,讓頁面介面出現卡頓時第一時刻通知到您的維運團隊。

阿里雲ARMS診斷Java應用卡頓問題實戰

三、還有哪些網站體驗問題?

當然除了網站卡頓、頁面載入慢以外,網站還會出現後台報錯、頁面載入失敗、記憶體洩漏等一系列問題。如何利用ARMS快速解決更多網站疑難雜症,請關注我們的 ARMS 系列文章 - 「網站常見問題1分鐘定位」。

相關推薦:

mysql-阿里雲-RDS-MySQL-5.5運算問題

自從用了七牛雲端的Robots後,百度無法抓取。診斷顯示robots禁止。請問哪裡出了問題?

以上是阿里雲ARMS診斷Java應用卡頓問題實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn