性能監控

一旦你的服務器是在控制檯模式下運行,你就可以開始我們接下來的內容。 iostat iostat 命令用來顯示存儲子系統的詳細信息,通常用它來監控磁盤 I/O 的情況。要特別注意 iostat 統計結果中的 %iowait 值,太大了表明你的系統存儲子系統性能低下。 meminfo 和 free Meminfo 可讓你獲取內存的詳細信息,你可以使用 cat 和 grep 命令來顯示 meminfo 信息: 1 cat /proc/meminfo 另外你可以使用 free 命令來顯示動態的內存使用信息,free 只是給你大概的內存信息,而 meminfo 提供的信息更加詳細。例如在 oschina 上的 free 命令執行結果: mpstat mpstat mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。 再來看看 oschina 上的 mpstat 命令執行結果: netstat Netstat 和 ps 命令類似,是 Linux 管理員基本上每天都會用的工具,它顯示了大量跟網絡相關的信息,例如 socket 的使用、路由、接口、協議、網絡等等,下面是一些常用的參數: 1 2 3 4 -a Show all socket information -r Show routing information -i Show network interface statistics -s Show network protocol statistics

nmon
Nmon, 是 Nigel’s Monitor 的縮寫,是一個使用很普遍的開源工具,用以監控 Linux 系統的性能。Nmon 監控多個子系統的性能數據,例如處理器的使用率、內存使用率、隊列、磁盤I/O統計、網絡I/O統計、內存頁處理和進程信息。Nmon 也提供了一個圖形化的工具: 要運行 nmon,你可以在命令行中啓動它,然後選擇要監控的子系統,這些子系統都對應有一個快捷鍵,例如輸入 c 可查看 CPU 信息,m用於查看內存,d用來查看磁盤信息等,你也可以使用 -f 命令將 nmon 的執行結果保存到一個 CSV 文件中,便於日後分析。 在每日的監控工作中,我發現 nmon 是我最常用的工具。 pmap pmap 命令用來報告每個進程佔用內存的詳細情況,可用來看是否有進程超支了,該命令需要進程 id 作爲參數。 ps 和 pstree ps 和 pstree 命令是 Linux 系統管理員最好的朋友,都可以用來列表正在運行的所有進程。ps 告訴你每個進程佔用的內存和 CPU 處理時間,而 pstree 顯示的信息沒那麼詳細,但它以樹形結構顯示進程之間的依賴關係,包括子進程信息。一旦發現某個進程有問題,你可以使用 kill 來殺掉它。

sar
sar 程序是系統監控工具裏的瑞士軍刀。該程序包含三個工具:sar 用來顯示數據,sa1 和 sa2 用來收集數據並保存。sar 可用來顯示 CPU 使用率、內存頁數據、網絡 I/O 和傳輸統計、進程創建活動和磁盤設備的活動詳情。sar 和 nmon 最大的不同就是 sar 跟適合用作長期的監控,而 nmon 可以讓你快速的瞭解系統當前狀態。 strace strace 經常被認爲是程序員調試的工具,但不止如此。它可以記錄進程進行系統調用的詳情,因此它也是一個非常好的診斷工具,例如你可以使用它來找出某個程序正在打開某個配置文件。 Strace 也有一個缺陷,但它在跟蹤某個進程時會讓該進程的性能變得非常差,因此請謹慎使用。 tcpdump Tcpdump 是一個簡單、可靠的網絡監控工具,用來做基本的協議分析,看看那些進程在使用網絡以及如何使用網絡。當然,如果你要獲取跟詳細的信息,你應該使用 Wireshark (下面我們會介紹). top top 命令顯示當前的活動進程,默認它是按消耗 CPU 的厲害程度進行排序,每5秒鐘刷新一次列表,你也可以選擇不同的排序方式,例如 m 是按內存佔用方式進行排序的快捷鍵。 uptime uptime 命令告訴你這臺服務器從開機啓動到現在已經運行了多長時間了。同時也包含了從啓動到現在服務器的平均負載情況,看看 oschina 的數據: 我已經忘了上次是爲什麼重啓機器了,好像是換了個機櫃。 vmstat 你可以使用 vmstat 來監控虛擬內存,一般 Linux 上的開發者喜歡使用虛擬內存來獲得最佳的存儲性能。該命令報告關於內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統範圍內的這些統計信息(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。 在 oschina 上執行 vmstat 的結果:


Wireshark Wireshark, 前身是 Ethereal ,是一個網絡協議檢測程序,讓您經由程序抓取運行的網站的相關資訊,包括每一封包流向及其內容、資訊可依操作系統語系看出,方便查看、監控TCP session動態等等. 這裏羅列的是大多數最有價值的 Linux 監控程序,當然,你可能還會使用其他的工具,不妨跟大家分享下


找到最耗CPU的java線程 ps命令 命令:
ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid 結果展示: 這個命令的作用,主要是可以獲取到對應一個進程下的線程的一些信息。 比如你想分析一下一個java進程的一些運行瓶頸點,可以通過該命令找到所有當前Thread的佔用CPU的時間,也就是這裏的最後一列。 比如這裏找到了一個TID : 30834 ,所佔用的TIME時間最高。 通過 printf "%x\n" 30834 首先轉化成16進制, 繼續通過jstack命令dump出當前的jvm進程的堆棧信息。 通過Grep命令即可以查到對應16進制的線程id信息,很快就可以找到對應最耗CPU的代碼快在哪。

實例 http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章