性能測試監控工具的使用

監控的分層

理論上,咱們須要對系統數據流轉的每一個節點作監控,收集數據,以便於分析。可是受限於環境問題或者時間問題,咱們不能面面俱到,因此須要把系統作一下簡單的分類,選擇最須要的地方進行監控。 java

系統資源的監控

對於承載應用的最基礎設備,咱們須要充分了解它的使用狀況,觀察其當前的狀態,對於硬件設備的評估,也有助於線上設備的採購和選擇。通常狀況下,咱們須要關注的內容有CPU、Memory、I/O、Network,也就是咱們一般說的3+1. python

注意點: linux

一、CPU咱們關注的是%us(用戶使用率),%sy(系統使用率,當須要系統作任務調度的時候會消耗)須要注意。 ios

二、Linux下,空閒Memory的計算方式,基於Linux系統的內存使用原則,不要看到free的數據少了,以爲是瓶頸了。 sql

例如:Total 2G usred 1.5G free 200M buffer 1G cache 500M shell

系統當前能使用的Memory總量 = free + buffer + cache 數據庫

三、IO的瓶頸的確認須要特別注意,須要多方考慮,綜合思考,"一切問題皆IO"。 架構

四、Network須要注意上下行及單位。 oracle

監控工具

Nmon小巧精練的工具,安裝和使用都很方便,支持多版本的linux,內容豐富。 框架

Glances業內號稱Linux系統實時監控的瑞士軍刀,用python開發,很小巧,監控覆蓋全面,界面清晰,經過顏色來區別不一樣的等級,一目瞭然。

最高境界,利用linux自帶的命令,經過shell腳本自行採集數據並繪製成圖表。經常使用的命令top、iostat、pidstat、sar、netstat、iftop、vmsata、jstat(jvm使用狀況)、jps(java進程)等。

應用層資源的監控

咱們能夠操做系統的資源消耗,理解爲是應用層問題的外在表現。在應用層,因爲框架的不一樣,開發人員水平及意識的限制,會產生各類各樣的問題,致使了硬件資源的不合理消耗,從而產生性能問題。在這一層次,咱們一般關注如下問題:

一、阻塞,正在運行的線程沒有運行結束,暫時讓出CPU。

二、爭用,多個線程對同一段數據進行不一樣的操做。

三、死鎖,好的線程鎖是業務的保障,很差的鎖是災難。

四、理解線程狀態圖,有助於解決問題。

基於java的監控工具

Jvisualvm JDK自帶監控工具,無需安裝,只須要一個簡單的配置,就能全方位監控代碼運行狀況,跟蹤方便,插件豐富,你不能錯過的工具。

JProfiler直覺式的GUI讓你能夠找到性能瓶頸、抓出內存漏失(memory leaks)、並解決執行緒的問題。它讓你得以對heap walker作資源回收器的root analysis,能夠輕易找出內存漏失;heap快照(snapshot)模式讓未被參照(reference)的對象、稍微被參照的對象或在終結(finalization)隊列的對象都會被移除。

數據庫資源的監控

目前,80%性能問題,會出如今數據庫層面。配置不合理;開發人員沒有意識,致使SQL執行效率差;線上的大數據量沒有提早考慮;不合理的索引等等,都在時時刻刻影響着性能;咱們須要重點關注數據庫層面的性能問題,關注點如下問題:

一、SQL的執行效率,或者說執行計劃。

二、索引的正確使用。

三、大數據量狀況下分庫分表。

四、其它TOP N的消耗。

數據庫監控工具

在oracle數據庫中,沒什麼比AWR報告更好了,看懂了這份報告,基本上足夠了。

Msql監控工具MONyog,內容全面,界面清爽,我的強力推薦此工具,今後查看慢SQL再也不是體力活。

總結

監控工具沒有好壞之分,每一個節點選擇一款並把它用熟悉,瞭解每一個指標背後的含義,纔是正解。咱們要作到知其然而知其因此然,這樣才能提升本身的判斷力,找出問題的根本緣由。

性能測試須要豐富的經驗,作得越久,你的價值越高。真正的高手會在系統架構之初,就會預期到並解決掉大部分的性能問題。當下,咱們不要急功近利,只想學習怎麼分析怎麼調優,咱們須要沉下心來,從小處作起,從基礎作起。

相關文章
相關標籤/搜索