須要監視Linux服務器的性能?試試這些內置的命令和一些附加的工具吧。大多數Linux發行版都集成了一些監視工具。這些工具能夠獲取有關係統活動的信息的詳細指標。經過這些工具,你能夠發現產生系統性能問題可能存在緣由。下面討論的是一些最基本的命令,它涉及到系統分析和調試服務器等一些問題,如:
1. 找出系統瓶頸問題.
2. 磁盤 (儲存) 瓶頸問題.
3. CPU和內存瓶頸問題.
4. 網絡瓶頸問題.
# 1: top – 查看活動進程的命令
TOP工具可以實時顯示系統中各個進程的資源佔用情況。默認狀況下,它將顯示系統中CPU最「敏感」的任務列表.該命令能夠按CPU/內存的使用狀況和執行時間對任務進行排序,並每五秒鐘更新一次。
經常使用的快捷鍵
Top命令爲咱們提供了不少有用的快捷鍵,如:
快捷鍵 用法
t 切換顯示進程和CPU狀態信息。
m 切換顯示進程和CPU狀態信息。
A 分類顯示各類系統資源的消耗狀況。可用於快速識別系統的性能要求極高的任務。
o 改變顯示項目的順序。
r 從新設置進程的優先級別。(系統提示用戶輸入須要改變的進程PID以及須要設置的優先級值。)
k 終止一個進程。(系統將提示用戶輸入須要終止的進程PID)
s 改變刷新的時間間隔。
u 查看指定用戶的進程。
=> Related:要了解更多關於top的用法,請參考系統幫助文檔。
# 2: vmstat – 系統活動、硬件以及系統信息
這個命令用來報告關於內核線程、虛擬內存、磁盤、陷阱和CPU活動的統計信息。
# vmstat 3
輸出樣例:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0
顯示內存使用狀況:
# vmstat –m
=> Related: 要了解更多關於vmstat的用法,請參考系統幫助文檔。
# 3: w – 找到已登錄的用戶而且查看他們作了什麼操做
W命令用來顯示機器上最近登錄的用戶信息以及他們的進程信息。
# w username
# w vivek
輸出樣例:
17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf
root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w
# 4: uptime – 系統已運行的時間
Uptime命令能夠查看系統已經運行了多長時間。截止當前時間日期,系統已經運行了多長時間,當前登陸的用戶有哪些,已經在過去的1,5,15分鐘,系統的平均負載值狀況。
# uptime
輸出樣例:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
1一般被認爲是最佳的負載值。系統負載值根據系統的不一樣而不一樣。對於單CPU的系統,負載值在1-3爲正常,SMP的系統,負載值在6-10之間也是能夠接受的。(看具體的狀況)
# 5: ps – 顯示進程
ps命令用來報告當前進程的快照。要選擇全部進程,使用-A或-e選項:
# ps –A
輸出樣例:
Ps命令跟top類似,但ps爲咱們提供了更多的信息。
以長格式顯示輸出:
# ps –Al
查看線程:(LWP和NLWP):
# ps –AlFH
To See Threads After Processes:
# ps –AlLm
在服務器上打印出全部進程:
# ps ax
# ps axu
打印出進程樹:
# ps –ejH
# ps axjf
# pstree
See Every Process Running As User Vivek:
# ps -U vivek -u vivek u
設置以用戶定義的格式輸出:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan
只顯示lighttpd的進程樹:
# ps -C lighttpd -o pid=
Or
# pgrep lighttpd
Or
# pgrep -u vivek php-cgi
顯示pid爲55977的進程名:
# ps -p 55977 -o comm=
找出最耗費內存的前10個進程:
# ps -auxf | sort -nr -k 4 | head -10
找出最耗費CPU的前10個進程:
# ps -auxf | sort -nr -k 3 | head -10
# 6: free – 查看內存的使用狀況
free指令會顯示內存的使用狀況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩衝區等。
參數:
-b 以Byte爲單位顯示內存使用狀況。
-k 以KB爲單位顯示內存使用狀況。
-m 以MB爲單位顯示內存使用狀況。
-o 不顯示緩衝區調節列。
-s <間隔秒數> 持續觀察內存使用情況。
-t 顯示內存總和列。
-V 顯示版本信息。
# free
輸出樣例:
total used free shared buffers cached
Mem: 12302896 9739664 2563232 0 523124 5154740
-/+ buffers/cache: 4061800 8241096
Swap: 1052248 0 1052248
free的輸出一共有四行,第四行爲交換區的信息,分別是交換的總量(total),使用量(used)和有多少空閒的交換區(free)。
第二行和第三行是比較讓人迷惑的。這兩行都是說明內存使用狀況的。第一列是總量(free),第二列是使用量(free),第三列是可用量(free)。第一行的輸出時從操做系統(OS)來看的。也就是說,從OS的角度來看,計算機上一共有:
• 999212KB(缺省時free的單位爲KB)物理內存,即FO[2][1];
• 在這些物理內存中有967476KB(即FO[2][2])被使用了;
• 還用31736KB(即FO[2][3])是可用的;
=> Related: 要了解更多關於free的東西,請百度或者google之。
# 7: iostat – 監視CPU平均負載值,I/O狀態
該命令用於報告CPU和輸入/輸出設備,分區和網絡文件系統(NFS)的詳細統計數據。
# iostat
輸出樣例:
php
基本使用:html
# iostat -d -k 1 10linux
參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block爲單位的列強制使用Kilobytes爲單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。
ios
# iostat -d -k 1 10web
Related: 要了解更多關於iostat的東西,請查看iostat的幫助文檔。
# 8: sar - 收集和報告系統狀態信息
Sar 命令是用來收集,報告和保存系統活動信息的。
Sar 把自已收集的數據以二進制格式保存在[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\[LC3U)F{0XCAB)LKNIT0K@G.gif[/img]ar/log[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\{)_G62``_[8)(8ND1X0_M7L.gif[/img]裏
使用 sar -d 能夠獲得當天磁盤活動的狀況彙總
sar -n DEV 則能給出網絡接口的統計信息
sar -A 能夠報告全部的信息
sar 適用於快速粗略瞭解歷史信息。
sar 命令行的經常使用格式: sar [options] [-o file] t [n]
options 爲命令行選項,sar命令的選項不少,下面只列出經常使用選項:
-A:全部報告的總和。
-u:CPU利用率
-v:進程、I節點、文件和鎖表狀態。
-d:硬盤使用報告。
-r:沒有使用的內存頁面和硬盤塊。
-g:串口I/O的狀況。
-b:緩衝區使用狀況。
-a:文件讀寫狀況。
-c:系統調用狀況。
-R:進程的活動狀況。
-y:終端設備活動狀況。
-w:系統交換活動。
Related: 要了解更多關於sar的東西,請自行搜索相關資料。
# 9: mpstat – 實時系統監視工具
mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看全部CPU的平均情況信息,並且可以查看特定CPU的信息。
下面只介紹mpstat與CPU相關的參數,mpstat的語法以下:
Usage: mpstat [ options... ] [ <interval> [ <count> ] ]
Options are:
[ -P { <cpu> | ALL } ] [ -V ]
顯示每一個進程對CPU的平均利用率:
# mpstat -P ALL
輸出樣例:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
06:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04
06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31
06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93
06:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00
06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80
06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91
06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98
06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75
06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89
#10: pmap – 查看進程使用內存的狀況
pmap命令用來報告進程使用對於的相應內存的狀況。使用下面命令能夠查出某些內存瓶頸問題的緣由。
# pmap -d PID
顯示進程號爲47394的進程所用內存的信息:
# pmap -d 47394
輸出樣例:
47394: /usr/bin/php-cgi
Address Kbytes Mode Offset Device Mapping
0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi
0000000000886000 140 rw--- 0000000000286000 008:00002 php-cgi
00000000008a9000 52 rw--- 00000000008a9000 000:00000 [ anon ]
0000000000aa8000 76 rw--- 00000000002a8000 008:00002 php-cgi
.....
......
00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted)
00007fffc95fe000 84 rw--- 00007ffffffea000 000:00000 [ stack ]
ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ]
mapped: 933712K writeable/private: 4304K shared: 768000K
最後一行很是重要:
mapped: 933712K total amount of memory mapped to files.
writeable/private: 4304K the amount of private address space.
shared: 768000K the amount of address space this process is sharing with others.
#11 & #12 : netstat 和 ss – 查看網絡狀況
netstat命令顯示網絡鏈接,路由表,網絡接口統計,假裝鏈接,組播成員身份。ss命令相似netstat命令的信息。關於ss和netstat命令,您能夠參閱系統幫助文檔或者互聯網上的資源。
#13: iptraf – 實時網絡情況監視工具
iptraf是一款彩色的交互式的IP局域網監控工具。這是一個基於ncurses的IP LAN監視工具,它會統計網絡中產生的各類數據,包括TCP信息,UDP鏈接數,ICMP和OSPF信息,以太網負載信息,節點統計,IP校驗和錯誤,以及其餘信息。而且提供:
Network traffic statistics by TCP connection
IP traffic statistics by network interface
Network traffic statistics by protocol
Network traffic statistics by TCP/UDP port and by packet size
Network traffic statistics by Layer2 address
上圖是General interface statistics: IP traffic statistics by network interface
上圖是網絡鏈接中創建的TCP鏈接信息的統計
#14: tcpdump – 網絡情況分析工具
tcpdump用來抓包的一個的簡單命令。可是,要使用該工具,你需熟悉TCP /IP協議。例如:顯示網絡中有關DNS的信息,請輸入:
# tcpdump -i eth1 'udp port 53'
顯示去往202.54.1.5的全部ftp會話信息:
# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
顯示去往192.168.1.5的全部HTTP會話信息:
# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
使用Wireshark查看tcpdump抓包文件的詳細信息,輸入:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
#15: strace – 系統調用工具
strace是Linux環境下的一款程序調試工具,用來監察一個應用程序所使用的系統呼叫及它所接收的系統信息。strace是一個有用的小工具,它能夠經過跟蹤系統調用來讓你知道一個程序在後臺所作的事情。Strace是一個基礎的調試工具,在大多數 Linux系 統上默認已經安裝;可是即使你不是在跟蹤一個問題的時候它也是一個極好的軟件。它能告訴你不少關於一個Linux程序怎樣工做的信息。
#16: /Proc 文件系統
Linux 內核提供了一種經過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。幾個例子:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# c。at /proc/mounts
Related: 要更詳細地去了解/proc文件系統,你能夠去查看官方文檔
#17: Nagios – 服務器和網絡信息監視工具
Nagios是一款很流行的開源系統和網絡監控應用軟件。你能夠很輕鬆地用它監控全部的主機,網絡設備和服務。在系統或服務狀態異常時會第一時間通知網站運維人員(發出郵件或短信報警),在狀態恢復正常後發出郵件或短信通知。
#18: Cacti -基於WEB的監視工具
Cacti是經過 snmpget來獲取數據,使用 RRDtool繪畫圖形,並且你徹底能夠不須要了解RRDtool複雜的參數。它提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結構、host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,功能很是強大完善。界面友好。CACTI軟件Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來做出各式各樣的監控圖。
#19: KDE System Guard – 圖形化的系統監視工具
KDE System Guard (KSysguard)是KDE的任務管理和性能監控工具。它採用client/server架構,能夠監控本機也能夠監控遠端主機。
一篇51CTOblog的博文,對KDE System Guard的介紹很詳細,有興趣的朋友去看看。
http://linuxshow.blog.51cto.com/1572053/371657
#20: Gnome System Monitor – 圖形化系統監視工具
它能夠顯示系統信息,監視系統進程,系統資源負載狀況,以及文件系統。你也能夠用它來提升系統性能。儘管功能不像KDE System Guard那麼強大,但做爲Gnome桌面環境的圖形化性能分析工具,Gnome System Monitor能夠圖形化顯示性能相關係統資源用於發現可能的峯值和瓶頸。產生的全部統計信息都是實時,要想作長時間的性能分析需使用其它工具來完成。
功能:
Displays various basic information about the computer's hardware and software.
Linux Kernel version
GNOME version
Hardware
Installed memory
Processors and speeds
System Status
Currently available disk space
Processes
Memory and swap space
Network usage
File Systems
Lists all mounted filesystems along with basic information about each.
其餘工具:
nmap – 掃描主機的端口開放狀況.
lsof - 列出系統當前打開的文件,網絡鏈接以及更多信息。
ntop web based tool – Ntop是一款監控網絡流量工具,它顯示的網絡情況更加直觀、詳細。Ntop甚至能夠列出每一個節點計算機的網絡帶寬利用率。它是一個靈活的、功能齊全的,用來監控和解決局域網問題的工具;能夠自動從網絡中識別有用的信息;將截獲的數據包轉換成易於識別的格式;對網絡環境中通訊失敗的狀況進行分析;探測網絡通訊的時間和過程等。
Conky - Conky是x-window下,一款免費的,輕量級系統監控的工具。它可以監控許多系統環境的狀態,其中包括的CPU,內存,交換空間,磁盤存儲,溫度,進程,網絡接口,電池電量,系統消息,電子郵件收件箱等。
GKrellM – 它來用於監測CPU狀態,內存,硬盤,網絡接口,本地和遠程郵箱,以及其餘的東西等。
vnstat – vnstat是一個基於控制檯的網絡流量監控軟件,它會保持每個月,天天,每小時,監視並記錄所選定網絡接口的網絡通訊情況。
htop – htop是一個加強版本的top,同時也是一個交互式進程查看器,它能夠以樹狀結構來顯示進程列表。
vim
mtr – mtr在單一的網絡診斷工具上,結合了traceroute和ping程序的功能。服務器
轉自:http://bbs.51cto.com/thread-971896-1.html網絡