需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧。大多数Linux发行版本都装备了大量的监控工具。这些工具提供了能用作取得相关信息和系统活动的量度指标。你能使用这些工具发现造成性能问题可能原因。此次讨论到的工具只是分析和调试服务器下面问题时最基本工具中的一部分。
1.找出瓶颈
2.硬盘(存储)瓶颈
3.CPU及内存瓶颈
4.网络瓶颈
1: top - 进程活动
top提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷新一次。
常用热键
热键
用途
t
显示摘要信息开关.
m
显示内存信息开关.
A
分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。
f
添加删除所要显示栏位.
o
调整所要显示栏位的顺序.
r
调整一个正在运行的进程Nice值.
k
结束一个正在运行的进程.
z
彩色/黑白显示开关
2:vmstat -系统活动、硬件及系统信息
使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
# vmstat 3
显示内存使用详细信息
# vmstat -m
显示内存活动/不活动的信息
# vmstat -a
3: w - 显示谁已登录,他们正在做什么?
w命令显示系统当前用户及其运行进程的信息。
# w barlow
13:52:12 up 2:03, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
barlow pts/0 192.168.8.88 11:51 0.00s 16.10s 0.12s w barlow
4:uptime - 告诉系统已经运行了多久?
uptime命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的1,5,15分钟里平均负载时多少。
# uptime
13:15:10 up 1:26, 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
输出附加全格式(显示进程在执行时传入的参数)
# ps -AlF
显示进程结构
# ps -AlFH
在进程后显示线程
# ps -AlLm
打印服务器上所有进程
# ps ax
# ps axu
打印进程树
# ps -ejH
# ps axjf
# pstree
打印安全信息
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM
查看使用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
只显示Nginx的进程ID
# ps -C nginx -o pid=
或者
# pgrep nginx
或者
# pgrep -u root nginx
显示PID为1386的进程名称
# ps -p 1386 -o comm=sshd
找出消耗内存最多的前10名进程
# ps -auxf | sort -nr -k 4 | head -10
找出使用CPU最多的前10名进程
# ps -auxf | sort -nr -k 3 | head -10
6:free 内存使用情况
free命令显示系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。
# free -m
total used free shared buffers cached
Mem: 482 324 158 0 43 131
-/+ buffers/cache: 148 333
Swap: 1983 0 1983
7:iostat - CPU平均负载,硬盘活动
iostat命令可报告中央处理器(CPU)的统计信息,各种设备、分区及网络文件系统输入/输出的统计信息。
#iostat
Linux 2.6.32-358.2.1.el6.x86_64 (centos) 2013年03月19日 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.05 0.00 0.59 0.33 0.00 99.03
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.01 0.07 0.00 376 0
sda 2.69 54.20 25.24 298656 139106
dm-0 5.97 52.48 25.24 289194 139088
dm-1 0.06 0.47 0.00 2576 0
8:sar - 搜集和报告系统活动
sar命令用来搜集、报告和储存系统活动信息。查看网路计数器,输入:
# sar -n DEV | more
显示最近24小时网络计数器
# sar -n DEV -f /var/log/sa/sa24 | more
你亦可以用sar显示实时情况
# sar 4 5
9:mpstat - 多处理器使用率
mpstat命令可以显示所有可用处理器的使用情况,处理器编号从0开始。mpstat -P ALL显示每个处理器的平均使用率。
# mpstat -P ALL
10: pmap - 进程的内存使用
pmap命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
# pmap -d PID
显示PID为1386进程的内存信息。
#pmap -d 1386
1386: /usr/sbin/sshd
Address Kbytes Mode Offset Device Mapping
mapped: 0K writeable/private: 0K shared: 0K
最后一行非常重要:
* mapped: OK 内存映射所占空间正常
* writeable/private: OK 私有地址空间正常
* shared: OK 共享地址空间正常
11和12: netstat和ss - 网络相关信息
netstat可以显示网络链接、路由表信息、接口统计信息、伪装链接和多播成员(multicast memberships),ss命令用来显示网络套接字信息,它允许显示类似netstat一样的信息。
13: iptraf - 网络实时信息
iptraf是一个可交互式的IP网络监控工具(如果默认没有安装,可以在线安装)。它可以生成多种网络统计信息包括:TCP信息、UDP数量、ICMP和OSPF信息、以太网负载信息、节点状态、IP校验错误等。有下面几种信息格式:
- 不同网络TCP链接传输量
- 不同网络接口IP传输量
- 不同协议网络传输量
- 不同TCP/UDP端口和不同包大小网络传输量
- 不同第二层地址网络传输量