1. 程式人生 > >【Linux】效能監控和除錯

【Linux】效能監控和除錯

[TOC]

題記

對於每個網際網路研發人員來說,每天要監控和除錯 Linux 系統性能問題都是非常困難的工作。

為此,我們總結了非常有用的並且最常用的20個命令列系統監視工具。這些命令可以在所有版本的 Linux 下使用去監控和查詢系統性能的實際原因。這些監控命令足夠你選擇適合你的監控場景。

# 1.top — Linux 系統程序監控

top 命令是效能監控程式,它可以在很多 Linux/Unix 版本下使用,並且它也是 Linux 系統管理員經常使用的監控系統性能的工具。Top 命令可以定期顯示所有正在執行和實際執行並且更新到列表中,它顯示出 CPU 的使用、記憶體的使用、交換記憶體、快取大小、緩衝區大小、過程控制、使用者和更多命令。它也會顯示記憶體和 CPU 使用率過高的正在執行的程序。當我們對 Linux 系統需要去監控和採取正確的行動時,top 命令對於系統管理員是非常有用的。讓我們看下 top 命令的實際操作。

image

# 2. vmstat — 虛擬記憶體統計

vmstat 命令是用於顯示虛擬記憶體、核心執行緒、磁碟、系統程序、I/O 模組、中斷、CPU 活躍狀態等更多資訊。在預設的情況下,Linux 系統是沒有 vmstat 這個命令的,如果你要使用它,必須安裝一個包名叫 sysstat 的程式包。命令格式常用用法如下:

# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 810420  97380  70628    0    0   115     4   89   79  1  6 90  3  0

3. lsof — 開啟檔案列表

開啟的檔案主要包括磁碟檔案、網路套接字、管道、裝置和程序。使用這個命令的主要原因是一個一個盤不能解除安裝並且顯示檔案正在使用或者開啟的錯誤資訊。這個命令很容易看出哪些檔案正在使用。這個命令最常用的格式:

# lsof

COMMAND     PID      USER   FD      TYPE     DEVICE     SIZE       NODE NAME
init          1      root  cwd       DIR      104,2     4096          2 /
init          1      root  rtd       DIR      104,2     4096          2 /
init          1      root  txt       REG      104,2    38652   17710339 /sbin/init
init          1      root  mem       REG      104,2   129900     196453 /lib/ld-2.5.so
init          1      root  mem       REG      104,2  1693812     196454 /lib/libc-2.5.so
init          1      root  mem       REG      104,2    20668     196479 /lib/libdl-2.5.so
init          1      root  mem       REG      104,2   245376     196419 /lib/libsepol.so.1
init          1      root  mem       REG      104,2    93508     196431 /lib/libselinux.so.1
init          1      root   10u     FIFO       0,17                 953 /dev/initctl

4. tcpdump — 網路資料包分析器

tcpdump 是一種使用最廣泛的命令列網路資料包分析器或資料包嗅探程式,主要用於捕獲和過濾 TCP/IP 包收到或者轉移在一個網路的特定藉口資訊。它也提供了一個選項引數去儲存將捕獲的包在一個檔案中用於以後分析使用,tcpdump 幾乎在所有的 Linux 版本中都是可用的。

# tcpdump -i eth0

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648
22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648
22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347

5. netstat — 網路統計

netstat 命令是一個監控網路資料包傳入和傳出的統計介面的命令列工具。它對於許多系統管理員去監控網路效能和解決網路相關問題是一個非常有用的工具。

# netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:sunrpc                    *:*                         LISTEN
tcp        0      0 *:realm-rusd                *:*                         LISTEN
tcp        0      0 *:ftp                       *:*                         LISTEN
tcp        0      0 localhost.localdomain:ipp   *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42709 TIME_WAIT
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42710 TIME_WAIT
tcp        0      0 *:http                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0      0 *:https                     *:*                         LISTEN 

6. htop — 程序監控

htop 是一個更加先進的互動式的實時監控工具。htop 與 top 命令非常相似,但是他有一些非常豐富的功能,如使用者友好介面管理程序、快捷鍵、橫向和縱向程序等更多的。htop 是一個第三方工具並不包括在 Linux 系統中,你需要使用包管理工具進行安裝。

image

7. iotop — 監控 Linux 磁碟 I/O

iotop 也是和 top 和 htop 命令相似,但是它會有一個報告功能去監控和顯示實時的磁碟 I/O 輸入和輸出和程式程序。這個工具對於查詢精確的高的磁碟讀/寫過程是非常有用的。

image

8. iostat — 輸入/輸出統計

iostat 是收集和展示系統輸入和輸出儲存裝置統計的簡單工具。這個工具通常用於查詢儲存裝置效能問題,包括裝置、本地磁碟、例如 NFS 遠端磁碟。

# iostat

Linux 2.6.18-238.9.1.el5 (tecmint.com)         09/13/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.60    3.65    1.04    4.29    0.00   88.42

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0       17.79       545.80       256.52  855159769  401914750
cciss/c0d0p1      0.00         0.00         0.00       5459       3518
cciss/c0d0p2     16.45       533.97       245.18  836631746  384153384
cciss/c0d0p3      0.63         5.58         3.97    8737650    6215544
cciss/c0d0p4      0.00         0.00         0.00          8          0
cciss/c0d0p5      0.63         3.79         5.03    5936778    7882528
cciss/c0d0p6      0.08         2.46         2.34    3847771    3659776

9. IPTraf —實時IP區域網監控

IPTraf 是一個基於開源的 Linux 系統實時網路(IP 網路)監測的工具。它能收集到各種各樣的資訊,如通過網路對 IP 流量監測,包括 TCP 標誌資訊、ICMP 詳細細節、TCP/UDP 流量故障、TCP 連線的資料包和拜恩計數。並且它還收集 TCP,UDP,ICMP,IP,非 IP,IP 校驗錯誤,介面活性等一般資訊和詳細資訊的介面統計資料。

image

10. Psacct 或者 Acct — 監視使用者活動

Psacct 或者 Acct 是用於監測每個使用者對系統的活躍狀態的一個非常有用的工具。在後臺有兩個守護程序在執行,一個是密切關注系統上每個使用者的整體活動,另一個程序關注有哪些資源被它們消耗。

這個工具對於系統管理員是非常有用的去跟蹤每個使用者的活動,可以知道使用者正在做什麼,發出了什麼樣的命令,佔用了多少資源,多長時間活躍在系統上。

11. Monit — 程式和服務監測

這是一個免費的開源的基於 web 程式的自動監控和管理系統程序、程式、檔案、目錄、許可權、校驗檔案系統。它監控的服務包括 Apache、MYSQL、Mail、FTP、Nginx 等等。系統狀態是可以從命令列或者自己的網路介面來檢視。

image

12. NetHogs — 監視每個程序的網路頻寬

NetHogs 是一個開源的漂亮的小程式(類似於 Linux 上面的 top 命令),在您的系統上保持每個程序的網路活動狀態。它也保持了一個程式或者應用實時的網路流量頻寬使用情況。

image

13. iftop — 網路頻寬監控

iftop 是另一個基於終端的開源的系統監測工具,主要功能是通過你自己系統上的網路介面顯示一個經常更新的網路頻寬利用率的列表(即源主機和目的主機)。iftop 監控的是網路的使用情況,而 top 監控的是 CPU 的使用情況。iftop 監視一個選定的介面並且顯示兩臺主機之間當前寬頻的使用情況。

image

14. Monitorix — 系統和網路監控

Monitorix 是一個儘可能多的在 Linux/Unix 上一個輕量級監控工具,主要設計是監控正在執行的系統和網路資源。它有一個內建的 HTTP web 服務去定期收集系統和網路資訊並顯示成圖片。它可以監視系統的平均負載使用、記憶體的分配、磁碟驅動器、系統服務、網路埠、郵件統計(Sendmail、Postfix、Dovecot 等等)、MYSQL 資料庫等等更多的服務。它的主要目的是監控整個系統的效能,並且有助於監測故障、瓶頸、異常活動等狀況。

image

15. Arpwatch — 乙太網活動監控器

Arpwatch是一種用來監視 Linux 網路的乙太網的網路流量的地址解析(網路地址轉換)的一個程式。它一直隨著網路時間戳的變化監視乙太網流量和產生日誌的 IP 和 MAC 地址對。當一個 IP 地址或 MAC 地址對發生變化的時候,它會發送電子郵件通知管理員。

並且它在檢測 ARP 攻擊是非常有用的。

16. Suricata — 網路安全監控

Suricata 是一個高效能的開源的網路安全與入侵檢測與預防 Linux、FreeBSD、Windows 等作業系統的監控工具。它是一個非營利基金 OISF(Open Information Security Foundation)擁有的。

17. VnStat PHP — 監測網路頻寬

VnStat PHP 是一個 web 前端應用最流行的社交工具叫“vnstat”。 VnStat PHP 使用了很好的圖形模式監控網路流量的使用情況。它顯示了每時、每天、每月的總結報告中的網路流量使用情況。

18. Nagios — 網路/伺服器監控

Nagios 是一個領先的開源的強大的監控系統,網路/系統管理員在他們影響主要業務流程之前識別和解決伺服器相關的問題。Nagios 可以監控遠端 Linux、Windows、開關、單視窗的路由器和印表機。它能顯示你的網路和伺服器關鍵的告警,有利於在錯誤反生之前幫助你解決問題。

19. Nmon — 監控Linux系統性能

Nmon(即奈吉爾效能監視器)工具用來監視 Linux 系統的所有資源包括:CPU、記憶體、磁碟使用率、網路上的程序、NFS、核心等等。這個工具有兩個模式:即線上模式和捕捉模式。線上模式適用於實時監控,捕捉模式用於儲存輸出為 CSV 格式後的處理。

image

20. Collectl — 體化效能檢測工具

Collectl 是另一個功能強大的基於命令列的監控工具,它可用於收集有關係統資源的資訊,包括 CPU 使用率、記憶體、網路、節點、程序、NFS、TCP 套接等等。

相關推薦

Linux效能監控除錯

[TOC] 題記 對於每個網際網路研發人員來說,每天要監控和除錯 Linux 系統性能問題都是非常困難的工作。 為此,我們總結了非

Linux效能監控除錯

作者:forest 來自:www.linuxstory.org 0 題記 對於每個網際網路研發人員來說,每天要監控和除錯 Linux 系統性能問題都是非常困難的工作。 為此,我們總結了非常有用的並且最常用的20個命令列系統監視工具。這些命令可以在所有版本的 Linux&nb

翻譯效能測量技術提升

⚠️這個系列是自己瞎翻的,文法很醜,主要靠意會,跳著跳著撿重要的部分翻,翻錯了不負責,就這樣哈。 ⚠️基於3.4.3,Performance Measurement and Improvement Techniques,附原文。 目標  在處理影象的

Linux幫助指令檔案目錄類常用指令

一、幫助指令 當我們對某個指令不熟悉是,可以使用linux提供的幫助指令來了解這個指令的使用方法。 1.通過man指令獲得幫助資訊     用法:man [命令]     例如:man ls   即可獲得ls命令的幫助資訊。

LinuxZabbix監控主機及郵箱報警設定

OS:Centos7.2--zabbix-server{IP地址:192.168.146.100} Centos7.2--zabbix-agent{IP地址:192.168.146.110} 這

linuxValgrind工具集詳解(六):使用Valgrind gdbserverGDB除錯程式

一、概述 在Valgrind下執行的程式不是由CPU直接執行的。相反,它執行在Valgrind提供的合成CPU上。這就是偵錯程式在Valgrind上執行時無法除錯程式的原因。 二、快速入門 在使用Memcheck工具時使用GDB除錯程式,啟動方式如下: 1、valgrind

LinuxGDB除錯多執行緒多程序以及Core檔案

GDB偵錯程式 基本概念 GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現

Linux目錄文件權限的查看修改

文件和目錄 得到 區域 紅色 執行命令 img 同時 修改權限 似的 轉載自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ----------------------------------------------

LinuxServicesSaaSDocker+kubernetes(4. 用ansible管理機器軟件)

實現 service SDR https 輸出 公司 keygen /etc slave 1. 簡介 1.1. 公司環境使用的puppet,但是我更喜歡ansible,原因有二,第一,我是紅帽的忠粉:),第二,我對python比較熟悉 1.2. ansible官方網站:ht

linux- nohup &

&的意思是在後臺執行, 什麼意思呢? 意思是說,當你在執行 ./a.out & 的時候,即使你用ctrl C,那麼a.out照樣執行(因為對SIGINT訊號免疫)。但是要注意,如果你直接關掉shell後,a.out程序同樣消失。 可見, &的後臺並不硬(因為對SIGHUP訊號不免疫)。

linuxshell指令碼除錯技術

在使用gcc編譯keepalived原始碼的時候,需要執行configure生成Makefile,然後用make命令編譯。但是在這個過程中,configure檔案卻一直無法掃描到一個已經安裝的三方庫。無奈,只能檢視configure原始碼。configure其實就是一個shell指令碼,為了

linuxValgrind工具集詳解(十五):Callgrind(效能分析圖)

一、概述 1、Callgrind Callgrind用於記錄程式中函式之間的呼叫歷史資訊,對程式效能分析。預設情況下,收集的資料包括執行的指令數,它們與原始碼行的關係,函式之間的呼叫者、被呼叫者關係以及此類呼叫的數量。可選項是,對快取記憶體模擬和分支預測(類似於Cachegrin

linuxValgrind工具集詳解(十四):Cachegrind(快取分支預測分析器)

一、概述 Cachegrind,它模擬CPU中的一級快取I1,Dl和二級快取,能夠精確地指出程式中cache的丟失和命中。如果需要,它還能夠為我們提供cache丟失次數,記憶體引用次數,以及每行程式碼,每個函式,每個模組,整個程式產生的指令數。這對優化程式有很大的幫助。 Cach

linuxValgrind工具集詳解(十):SGCheck(檢查棧全域性陣列溢位)

一、概述 SGCheck是一種用於檢查棧中和全域性陣列溢位的工具。它的工作原理是使用一種啟發式方法,該方法源於對可能的堆疊形式和全域性陣列訪問的觀察。 棧中的資料:例如函式內宣告陣列int a[10],而不是malloc分配的,malloc分配的記憶體是在堆中。 SGCheck和Me

linuxValgrind工具集詳解(九):Memcheck檢查的內容方法

一、值的有效性 1、什麼是值的有效性? 英文原文是Valid-value (V) bits,直譯過來就是有效值(V)位。 我將它理解為值的有效性,就是判斷在記憶體或CPU的實體地址中儲存的資料是否有效,比如在記憶體中變數(int i)代表的物理位置(不是地址),沒有初始化,就去使用它

Linux- 對find,xargs,grep管道的一些理解

問題 相信大家都知道在目錄中搜索含有固定字串檔案的命令: find . -name '*.py' |xargs grep test 剛開始的時候,我不熟悉xargs命令,所以直接使用的命令是: find . -name '*.py' |grep test 結果並不是自己所期望的。

LinuxC++程式開發與除錯

gcc的基本用法 g++ 與 gcc的關係: Linux的gcc和g++的區別 用gcc編譯C++檔案 anyway,還是用g++吧 假設有一個原始檔為main.cc #include <iostream> int main(int args, char** argv

Linux---vmware虛擬網路配置(NAT模式)及不能ping通主機百度

nat模式配置 nat模式配置,虛擬機器可以訪問百度 首先本機閘道器不能喝VMNET8一個閘道器 本機的IP及閘道器   VMnet8的設定 虛擬機器編輯器設定,需要和VMnet8在同一個閘道器下 虛擬機器的設定 此

MYSQLCPU資源可用記憶體大小對資料庫效能的影響

前言 可能影響到資料庫效能的幾個點,其一就是伺服器硬體,也是本節要說的CPU與可用記憶體。 引入 當熱資料超過可用記憶體大小,MemCache儲存引擎快取層容易失效(當快取大量失效時,容易產生大量的網路傳輸),從而影響伺服器的效能。 當出現這類I/O系統瓶頸時,我們

Linuxcentos 7 linux系統預設ftp安裝配置部署(詳細講解)

小生接觸 Linux 系統時間不長,想解決linux系統ftp安裝及部署問題,折騰了大半天,終於弄出來了,將各路 高手的配置方法綜合了一下,如有不對之處,歡迎各位看客指正,感謝! 一、宣告:   本文采用作業系統版本: Centos 7 Linux系統     版本源:C