標籤:
隨著互連網行業的高速發展,現在的網站介面設計變得越來越酷炫。誠然,視覺上給我們帶來的衝擊,會對網站流量起到很大的作用。但是,如果後端服務滿足不了突增的並發量,那麼使用者體驗就會變得極差。
眾所周知,做一個網站非常不容易。現在,Java 也是開發人員最常用的程式設計語言之一,而且很多企業級的 IT 公司對 Java 的依賴程度也非常之高。太多的網站由於 Java 的效能問題導致了商業前景破滅,聽起來很殘酷,但這是一個不爭的事實。那麼問題來了,是什麼原因導致了這些效能問題? 如何才能快速發現導致效能問題的根源呢?
對 Java 開發人員來說,OneAPM 的 Application Insight 就是一款必備的 Java 效能最佳化工具 ,它可以從4個維度「1. Web 事務;2. 資料庫;3. 外部服務;4.背景工作」來剖析系統在運行期間應用程式的一舉一動。比如說,使用者在訪問應用時,每步操作都給你剖析的很清楚,耗時多少,佔用多少資源,並且提供了曆史資料供你做參考對比,讓你對應用的運行情況一目瞭然,清清楚楚。
一般而言,我們對於效能的管理要經過兩個步驟:1. 效能問題發現;2. 效能問題最佳化。Application Insight 首先就是找到產生效能問題的根源,接下來的效能最佳化過程就會變的非常簡單。 OneAPM 也能夠從多個維度準確定位出影響效能問題的根源,並給提供最終的解決方案。:
我們可以在回應時間的總覽視圖中,清晰地看到4個維度「Web 事務,資料庫,外部服務,背景工作」所對應的回應時間消耗情況,接下來,我們就可以針對每個維度對時間消耗情況進行深度分析。
1. Web 事務
我們可以從視圖中看到緩慢 Web 事務的回應時間佔比、平均回應時間、效能指數、輸送量等等,同時,會按照耗時間長度短給 Web 事務做一個排序,以列表的形式展示出來,這樣你就可以輕鬆地找出哪些 Web 事務在執行過程耗時比較長,並且可以看到所提供的 Top5 Web 事物回應時間折線圖。
然後,我們根據提供 Web 事務的效能指數資料就可以初步判斷,使用者在操作時的體驗。到底 Web 事務在執行的過程中,時間都消耗在了什麼地方。更重要的是,Application Insight 還提供了慢事務跟蹤功能,點擊慢事務跟蹤列表中的名稱,就可以查看詳情,如:
通過這張資料檢視,展示了所跟蹤到的慢事務的「 概要,詳情,參數,SQL 」4 個指標的詳情,我們通過點擊詳情這個指標,整個 Web 事務組件的調用關係以及每個步驟耗時的整體情況將直接展現在你的眼前,我們還可以看到每個步驟業務的調用關係,並以樹形結構的方式進行展示,同時,可以展開方法跟蹤功能,找到耗時比較嚴重的程式碼,包括 HTTP 要求都可以清晰的看到。在整 Web 事務執行的過程中,我們將效能剖析結果以視圖的方式進行展現,看清楚每段代碼在執行中一舉一動,以及它所佔用資源的使用方式。
2. 資料庫
從資料庫的視圖中,我們會把對資料庫操作以 Table Name 和 SQL 操作類型的格式,按照回應時間耗時間長度短進行排序,將耗時較長的資料以列表形式展示出來,並且可以看到每次資料庫操作時的平均回應時間、總回應時間以及輸送量情況,這樣就可以找出排除 Web 事務的維度外,還會有哪些耗時較長的 SQL,讓你盡收眼底。OneAPM 還給提供了 Top 5 資料庫操作回應時間的視圖,如所示:
通過這些圖表資料,我們可以動態看到每次資料庫操作對應用效能消耗的整體情況。除此之外,我們還針對慢的資料庫操作,提供了慢 SQL 的跟蹤功能,
從這張視圖列表中,我們可以看到慢 SQL 的時間戳記以及耗時情況。你還可以點擊慢 SQL 的名稱繼續跟蹤這條 SQL 的詳細情況,如:
在這裡,我們就可以看到詳細的 SQL 陳述式以及其執行的次數和範圍,有了慢 SQL 追蹤功能提供的這些資料,那麼找到 SQL 緩慢原因就會變的非常容易。當然,因為這些 SQL 都是跟業務建立者有關係,所以很容易判斷出是程式的問題還是營運的問題。如果是程式問題,OneAPM 提供了此次操作的 Web 事務,如果是營運問題,也提供了慢 SQL 的跟蹤功能。總的來講,我們可以根據問題的原因,來最佳化我們的應用程式,這樣效率必然會得到大大的提升。
3. 外部服務
通過這張圖表,我們可以看到通過 WebService、Rest 等方式調用的第三方服務的平均回應時間、輸送量,還可以看到在調用介面時所消耗的時間,並且每個外部服務調用也會提供資料檢視,如所示:
回應時間和輸送量圖:展示該外部服務的回應時間和輸送量變化情況
調用者時間佔比圖:展示調用該外部服務的事務執行時間
事務列表:展示調用該條外部服務的事務執行時間佔比、回應時間和調用次數
從以上資料,我們可以得出結論,在效能消耗的角度上,耗時是主要發生在方法的調用方面,還是發生在介面那邊。通過這些效能資料,我們就能夠很快定位到導致應用效能問題的根本原因,再去解決問題話就會變得很輕鬆。
4. 背景工作
從背景工作的視圖中,我們可以看到在應用程式中比較耗時的任務,包括每個任務的平均回應時間、效能指數、輸送量、回應時間佔比等等。然後,我們在背景工作這個維度中,就可以發現那些比較耗時的執行任務,並提供相應的 Top 5 背景工作回應時間,輸送量,CPU 使用率等動態折線視圖。
從中,我們可以找出非 HTTP 要求方法對於大量佔用系統效能的瓶頸點,然後根據背景工作提供的 Top 5 響應視圖,就能夠直觀的看到嚴重消耗效能的背景工作以及 CPU 的使用率和記憶體使用量情況了。
通過背景工作效能消耗的剖析,我們還可以找出消耗資源比較嚴重的定時任務,對耗時的任務進行合理最佳化,那麼應用就會變的更加流暢。
綜合來講,
通過對「Web 事務,資料庫,外部服務,背景工作」 4 個維度深度剖析,我們很容易找到影響 Java 系統緩慢的原因。在發現這些原因後,我們再去進行系統最佳化,整個處理問題的過程就會變的簡單很多。
如果你非常關心系統效能消耗在哪個維度,或者是現在你的應用已經發生嚴重的效能問題,還遲遲找不到原因所在,那麼趕緊註冊一個 OneAPM 帳號,安裝 Application Insight 來感受一下吧! 不管你是做營運、開發還是測試 ,我們相信,使用 Application Insight 之後,一定會給你的工作帶來驚喜和收穫。
轉自 http://news.oneapm.com/oneapm-java/
從 4 個維度剖析:影響 Java 效能的那些因素