Linux 系统性能监视工具
在 Linux 服务器上,有众多命令行小工具可以用于监控服务器性能和状态。这些工具对于快速判断服务器运行情况,非常有帮助。
top
top是最常用的命令之一,用来持续显示系统资源的最新使用状况。
[patrick@ubuntu:~]$ top
top - 23:39:07 up 5:55, 3 users, load average: 0.16, 0.22, 0.18
Tasks: 141 total, 2 running, 138 sleeping, 0 stopped, 1 zombie
Cpu(s): 3.1%us, 1.1%sy, 0.0%ni, 95.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2041888k total, 1314284k used, 727604k free, 57688k buffers
Swap: 1951856k total, 0k used, 1951856k free, 728052k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6043 root 20 0 855m 50m 13m R 3 2.5 12:11.37 Xorg
2477 root 15 -5 0 0 0 S 1 0.0 0:02.28 scsi_eh_3
7008 patrick 20 0 15648 4936 3948 S 1 0.2 0:10.46 gnome-screensav
按 M 将会按照占用内存的大小排列进程,按 P 则会按照 CPU 占用率进行排列。
VIRT 表示进程使用的内存总大小,包括进程实际使用的内存、映射过的文件、与其它进程共享的内存等。RES 表示实际使用中的内存大小,SHR 表示与其它进程共享的内存大小。uptime
uptime最常用的作用是快速查看当时的系统负载情况。
[patrick@ubuntu:~]$ uptime
23:48:26 up 6:04, 3 users, load average: 0.76, 0.38, 0.24
通常来说,负载值/CPU数目 <= 1 的情况下,表示系统拥有足够的剩余处理能力,当负载值/CPU数目 > 1 的时候,就表示有进程需要等待 CPU 了。vmstat
vmstat会提供有关内存、交换分区、进程、IO、CPU 的报告。
[patrick@ubuntu:~]$ vmstat -S M
procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 697 57 712 0 0 28 17 161 552 8 2 89 1
iostat
iostat提供有关 CPU 的平均使用情况,以及 IO 信息。
[patrick@ubuntu:~]$ iostat -x
Linux 2.6.24-19-generic (ubuntu) 06/28/2008
avg-cpu: %user %nice %system %iowait %steal %idle
8.46 0.01 1.91 1.00 0.00 88.62
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.70 2.88 1.48 1.97 56.64 38.80 27.66 0.07 21.16 3.31 1.14
sdb 0.09 0.00 0.06 0.00 6.44 0.00 113.77 0.00 17.13 5.41 0.03mpstat
mpstat提供全局与单个 CPU 使用情况的统计报告。
[patrick@ubuntu:~]$ mpstat -P ALL
Linux 2.6.24-19-generic (ubuntu) 06/28/2008
11:57:36 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
11:57:36 PM all 8.48 0.01 1.69 0.99 0.05 0.17 0.00 88.61 183.99
11:57:36 PM 0 8.63 0.02 1.66 1.08 0.08 0.28 0.00 88.25 152.05
11:57:36 PM 1 8.33 0.00 1.73 0.90 0.02 0.07 0.00 88.95 31.93
11:57:36 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00netstat
netstat可以用来显示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息(对于 IP、ICMP、TCP 和 UDP 协议)以及 IPv6 统计信息(对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议)。
[patrick@ubuntu:~]$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 localhost:8118 *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:9050 *:* LISTEN
tcp 0 0 192.168.1.3:59421 by2msg1204111.gate:msnp ESTABLISHED
ps
ps可以提供一个当前运行的进程的列表。
[patrick@ubuntu:~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2844 1688 ? Ss Jun28 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S< Jun28 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< Jun28 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< Jun28 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jun28 0:00 [watchdog/0]
root 9 0.0 0.0 0 0 ? S< Jun28 0:00 [events/0]
pstree
pstree会显示出当前运行中的进程之间的树状结构。
[patrick@ubuntu:~]$ pstree
init─┬─/usr/bin/revela
├─NetworkManager───{NetworkManager}
├─NetworkManagerD
├─gconfd-2
├─gdm───gdm─┬─Xorg
│ └─x-session-manag─┬─bluetooth-apple
│ ├─compiz───compiz.real───compiz-decorato───gtk-window-deco
│ ├─gnome-panel
│ ├─gnome-settings-─┬─pulseaudio─┬─gconf-helper
│ │ │ └─2*[{pulseaudio}]
│ │ └─{gnome-settings-}
│ ├─nautilus───{nautilus}
│ ├─nm-applet
│ ├─python
│ ├─scim
│ ├─seahorse-agent
│ ├─update-notifier
│ └─{x-session-manag}
pgrep
pgrep会根据提供的正则表达式查找进程。
[patrick@ubuntu:~]$ pgrep -l ’scim’
6966 scim
7006 scim-launcher
7046 scim-helper-man
7047 scim-panel-gtk
7049 scim-launcher
7213 scim-bridge
lsof
lsof用于列出进程所打开的文件列表。
[patrick@ubuntu:~]$ lsof -p 12894
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
firefox 12894 patrick cwd DIR 8,7 4096 5423105 /home/patrick
firefox 12894 patrick rtd DIR 8,5 4096 2 /
firefox 12894 patrick txt REG 8,5 26924 557548 /usr/lib/firefox-3.0/firefox
firefox 12894 patrick mem REG 8,5 17884 900100 /lib/tls/i686/cmov/libnss_dns-2.7.so
firefox 12894 patrick mem REG 8,5 7552 899934 /lib/libnss_mdns4_minimal.so.2
因为在 Linux 中,端口也是被视作文件的,所以也可以使用lsof -i显示计算机上所有打开的因特网地址。
[patrick@ubuntu:~]$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
pidgin 11114 patrick 14u IPv4 58594 UDP 192.168.1.3:54865->reverse.gdsz.cncnet.net:8000
pidgin 11114 patrick 15u IPv4 57930 TCP 192.168.1.3:59421->by2msg1204111.phx.gbl:msnp (ESTABLISHED)

Leave a comment