1.top
显示cpu的实际使用情况
top - 21:14:33 up 39 days, 3:57, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8060264k total, 1430844k used, 6629420k free, 162536k buffers
Swap: 1048568k total, 0k used, 1048568k free, 1004332k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21508 root 20 0 15012 1156 892 R 0.5 0.0 0:01.96 top
1 root 20 0 19328 1484 1176 S 0.0 0.0 0:00.73 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.60 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.54 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
第一行 21:14:33 up 39 days, 3:57, 1 user, load average: 0.00, 0.00, 0.00
当前时间,用户数, 1分钟,5分钟,15分钟到目前的平均负载
第二行Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
93个进程,1个正在运行,92个sleeping
第三行 Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
us用户占用,sy内核空间,ni用户进程空间内改变过优先级的进程占用CPU百分比,id空闲CPU百分比,wa等待输入输出的CPU时间百分比,hi硬件中断,si软件中断
第四行Mem: 8060264k total, 1430844k used, 6629420k free, 162536k buffers
物理内存总量,使用的物理内存总量,空闲的,用作内核缓存的内存量
第五行:Swap: 1048568k total, 0k used, 1048568k free, 1004332k cached
交换区总量,使用的交换区总量,空闲,缓冲的交换区总量
第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID 进程id
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志
2.uptime
[root@vs308 ~]# uptime
22:24:48 up 39 days, 5:07, 1 user, load average: 0.01, 0.02, 0.00
显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况(在队列中等待执行的进程的数量),评估linux系统压力的主要指标是最近5分钟的负载指数,只要5分钟内的负载不大于5,系统就是健康的,不用做任何维护
如果这个数字大于了5,那么通常系统速度就会变慢,一般有如下几种可能:
1) 有程序占用大量CPU,使用top命令来检查(看看是否有java程序锁死之类的故障)
2) 有程序占用大量内存,使得内存真正不够用了(这个才是真正需要加内存的时候)
比如由于MySQL(和PHP搭配之最佳组合)在较大负载下运行容量为GB级别的数据库导致内存不够用,需要给服务器插入更多物理内存
3) 磁盘系统读写故障,IO吞吐错误造成CPU负载上升,需要光盘引导进入单用户模式扫描修复磁盘,修不好就只能更换新硬盘了
因此,对于Linux/Unix系统内存占用的百分比,无须过于关心,一般检查系统负载参数即可。
3.iostat
iostat是sysstat包的一部分。Iostat显示自系统启动后的平均CPU时间(与uptime类似),也可以显示磁盘子系统的使用情况,iostat用来监测CPU利用率和磁盘利用率。
%user:user level(应用)的CPU占用率情况
%nice:加入nice优先级的user level的CPU占用率情况
%sys:system level(内核)的CPU占用情况
%idle:空闲的CPU资源情况
Device:块设备名
Tps:设备每秒进行传输的数量(每秒的I/O请求)。多个单独的I/O请求可以被组成一个传输操作,因为一个传输操作可以是不同的容量。
Blk_read/s, Blk_wrtn/s:该设备每秒读写的块的数量。块可能为不同的容量。
Blk_read, Blk_wrtn:自系统启动以来读写的块设备的总量。
4.VmstatVmstat命令提供了对进程、内存、页面I/O块和CPU等信息的监控,vmstat可以显示检测结果的平均值或者取样值,取样模式可以提供一个取样时间段内不同频率的监测结果。
process(procs)
r:等待运行时间的进程数量
b:处在不可中断睡眠状态的进程
w:被交换出去但是仍然可以运行的进程,这个值是计算出来的
·memoryswpd:虚拟内存的数量
free:空闲内存的数量
buff:用做缓冲区的内存数量
·swap
si:从硬盘交换来的数量
so:交换到硬盘去的数量
·IO
bi:向一个块设备输出的块数量
bo:从一个块设备接受的块数量
·system
in:每秒发生的中断数量, 包括时钟
cs:每秒发生的context switches的数量
·cpu(整个cpu运行时间的百分比)
us:非内核代码运行的时间(用户时间,包括nice时间)
sy:内核代码运行的时间(系统时间)
id:空闲时间,在Linux 2.5.41之前的内核版本中,这个值包括I/O等待时间;
wa:等待I/O操作的时间,在Linux 2.5.41之前的内核版本中这个值为0
Vmstat命令提供了大量的附加参数,下面列举几个十分有用的参数:
引用
·m:显示内核的内存利用率
·a:显示内存页面信息,包括活跃和不活跃的内存页面
·n:显示报头行,这个参数在使用取样模式并将命令结果输出到一个文件时非常有用。例如root#vmstat –n 2 10以2秒的频率显示10输出结果
·当使用-p {分区}时,vmstat提供对I/O结果的统计
5. ps和pstreeps和pstree命令是系统分析最常用的基本命令,ps命令提供了一个正在运行的进程的列表,列出进程的数量取决于命令所附加的参数。例如ps –A 命令列出所有进程和它们相应的进程ID(PID),进程的PID是使用其他一些工具之前所必须了解的,例如pmap或者renice。
在运行java应用的系统上,ps –A 命令的输出很容易就会超过屏幕的显示范围,这样就很难得到所有进程的完整信息。这时,使用pstree命令可以以树状结构来显示所有的进程信息并且可以整合子进程的信息。Pstree命令对分析进程的来源十分有用。fromhttp://hi.baidu.com/kellyfu_ying/blog/item/8494f0236091b7fbd6cae20b.html