18 個命令&工具幫你定位 Linux 性能問題

1.Top
Top命令是一個性能監控程序,它按必定的順序顯示全部正在運行並且處於活動狀態的實時進程,並且會按期更新顯示結果。這條命令顯示了CPU的使用率、內存使用率、交換內存使用大小、高速緩存使用大小、緩衝區使用大小,進程PID、所使用命令以及其餘。
它還能夠顯示正在運行進程的內存和CPU佔用多的狀況。對性能測試的工程師來講,top命令式是很是有用的,我在另一篇文章「老李分享:應用程序性能瓶頸定位方法和原理」,裏面提供了一個案例,來幫助咱們進行性能定位。前端

2. VmStat – 虛擬內存統計
Linux 的 VmStat 命令用於顯示虛擬內存、內核線程、磁盤、系統進程、I/O 塊、中斷、CPU 活動 等的統計信息。缺省狀況下,vmstat 命令在 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/initctlmysql

4.Tcpdump-網絡包分析器linux

Tcpdump是最普遍使用的網絡包分析器或者包監控程序之一,用於捕捉或者過濾網絡上指定接口上接收或者傳輸的TCP/IP包。它還有一個選項用於把捕捉到的包保存到文件裏,以便之後進行分析。在幾乎全部主要的Linux發佈裏,tcpdump均可以使用。 
# tcpdump -i eth0tcpdump: 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 64347ios

5.Netstat-網絡狀態統計web

Netstat是一個用於監控進出網絡的包和網絡接口統計的命令行工具。它是一個很是有用的工具,系統管理員能夠用來監控網絡性能,定位並解決網絡相關問題。sql

# netstat -a | moreActive 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 – Linux進程監控
Htop 是一個很是高級的交互式的實時linux進程監控工具。 它和top命令十分類似,可是它具備更豐富的特性,例如用戶能夠友好地管理進程,快捷鍵,垂直和水平方式顯示進程等等。 Htop是一個第三方工具,它不包含在linux系統中,你須要使用YUM包管理工具去安裝它小程序

7.Iotop-監控Linux磁盤I/O緩存

Iotop命令一樣也很是相似於top命令和Htop程序,不過它具備監控並顯示實時磁盤I/O和進程的統計功能。在查找具體進程和大量使用磁盤讀寫進程的時候,這個工具就很是有用。
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流量監控,包括TCP標記、ICMP詳細信息、TCP/UDP流量分離、TCP鏈接包和字節數。同時還採集有關接口狀態的常見信息和詳細信息:TCP、UDP、IP、ICMP、非IP,IP校驗和錯誤,接口活動等。

10. psacct 或者 acct - 監視用戶活動
psacct或者acct工具用於監視系統裏每一個用戶的活動情況。這兩個服務進程運行在後臺,它們對系統上運行的每一個用戶的全部活動進行近距離監視,同時還監視這些活動所使用的資源狀況。
系統管理員可使用這兩個工具跟蹤每一個用戶的活動,好比用戶正在作什麼,他們提交了那些命令,他們使用了多少資源,他們在系統上持續了多長時間等等。

11.Monit - Linux進程和服務監控工具

Monit是一個免費的開源軟件,也是一個基於網絡的進程監控工具。它能自動監控和管理系統進程,程序,文件,文件夾,權限,總和驗證碼和文件系統。這個軟件能監控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH這樣的服務。你能夠經過命令行或者這個軟件提供的網絡藉口來查看系統狀態。
12.NetHogs-監視每一個進程使用的網絡帶寬

NetHogs是一個開放源源代碼的很小程序(與Linux下的top命令很類似),它密切監視着系統上每一個進程的網絡活動。同時還追蹤着每一個程序或者應用所使用的實時網絡帶寬。

13.iftop-監視網絡帶寬

iftop是另外一個在控制檯運行的開放源代碼系統監控應用,它顯示了系統上經過網絡接口的應用網絡帶寬使用(源主機或者目的主機)的列表,這個列表按期更新。iftop用於監視網絡的使用狀況,而'top'用於監視CPU的使用狀況。iftop是'top'工具系列中的一員,它用於監視所選接口,並顯示兩個主機間當前網絡帶寬的使用狀況。

14 Monitorix-系統和網絡監控
Monitorix 是一個免費的輕量級應用工具,它的設計初衷是運行和監控Linux/Unix服務器系統和資源等。它有一個HTTP 網絡服務器,這個服務器有規律的收集系統和網絡的信息並以圖形化的形式展現出來。它監控系統的平均負載和使用,內存分配、磁盤健康情況、系統服務、網絡端口、郵件統計(Sendmail,Postfix,Dovecot等),MySQL統計,等等。它就是用來監控系統的整體性能,幫助發現失誤、瓶頸和異常活動的。
15. Arpwatch – 以太網活動監視器
Arpwatch被設計用來監控Linux上的以太網地址解析 (MAC和IP地址的變化)。他在一段時間內持續監控以太網活動並輸出IP和MAC地址配對變更的日誌。它還能夠向管理員發送郵件通知,對地址配對的增改發出警告。這對於檢測網絡上的ARP攻擊頗有用。

16. Suricata – 網絡安全監控

Suricata 是一個開源的高性能網絡安全、入侵檢測和反監測工具,能夠運行Linux、FreeBSD和Windows上。非營利組織OISF (Open Information Security Foundation)開發並擁有其版權。

17. VnStat PHP – 網絡流量監控
VnStat PHP 是流行網絡工具"vnstat"的基於web的前端呈現。VnStat PHP 將網絡使用狀況呈如今漂亮的圖形界面中。他能夠顯示以小時、日、月計的上傳和下載流量並輸出總結報告。

18. Nagios – 網絡/服務器監控

Nagios是領先而強大的開源監控系統,他可讓網絡/系統管理員在問題影響到正常的業務以前發現並解決它們。有了Nagios系統,管理員能夠在單個窗口內遠程檢測Linux、Windows、開關、路由器和打印機。它能夠危險警告並指出系統/服務器是否有異常,這能夠間接幫助你在問題發生以前採起搶救措施。

相關文章
相關標籤/搜索