在听“”王子“”分享的过程中刚好听到他曾做过性能方面的测试,事后向他请教,他把他在简书写的Linux服务器监控命令的文章发给我让我看看。我这周就在公司的电脑上实操了一把,又在网上学习了其他命令实操了一回,在此展示出来。
1.Top查看CPU进程
cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"查看CPU名称和大小
2、查看数据库
ps -ef|grep mysqld看看是否有mysqld_safe和mysqld进程
3、查看内存
free查看内存情况(free –m-m代表下面的是以M为单位)
列名
说明
total
总计物理内存的大小。
used
已使用的内存数量。
free
可用的内存数量。
Shared
多个进程共享的内存总额。
Buffers/cached
磁盘缓存的大小。
选项
说明
-b
以字节为单位显示数据。
-k
以千字节(KB)为单位显示数据(缺省值)。
-m
以兆(MB)为单位显示数据。
-s delay
该选项将使free持续不断的刷新,每次刷新之间的间隔为delay指定的秒数,如果含有小数点,将精确到毫秒,如0.5为500毫秒,1为一秒。
对于free命令的输出,只需要关注Mem和-/+ buffers/cache的输出结果
Mem:该行使从操作系统的角度来看待输出数据的,used(7687500)表示内核(Kernel)+Applications+buffers+cached。free(284624)表示系统还有多少内存可供使用。
-/+buffers/cache:该行则是从应用程序的角度来看输出数据的。其free = 操作系统used + buffers + cached
free -k -s 1.5#以千字节(KB)为单位显示数据,同时每隔1.5刷新输出一次,直到按CTRL+C退出
df -h查看磁盘空间
Cat /proc/meminfo查看内存详细使用情况
使用free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细。
4.设备IO负载的实时监控工具(iostat):主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。
iostat -x该选项将用于显示和io相关的扩展数据。
% user :1.05。在用户级(应用程序)执行时产生的CPU使用率
% system :0.35。在系统级(内核)执行时产生的CPU使用率
% idle :98.08。在CPU空闲并且系统没有未完成的磁盘I/O请求(idle,如果高,说明CPU较空闲,如果持续低于10的话,说明CPU处理能力低,此时存在CPU瓶颈)
% iowait :0.53。CPU空闲期间系统有未完成的磁盘I/O请求
%nice :0.00。(改变进程优先序列操作)操作使用
%steal :0.00。虚拟CPU的无意识等待时间
iostat -d 1 3#仅显示设备的IO负载,其中每隔1秒刷新并输出结果一次,输出3次后iostat退出。
iostat -d 1#和上面的命令一样,也是每隔1秒刷新并输出一次,但是该命令将一直输出,直到按CTRL+C退出。
列名
说明
Blk_read/s
每秒块(扇区)读取的数量。
Blk_wrtn/s
每秒块(扇区)写入的数量。
Blk_read
总共块(扇区)读取的数量。
Blk_wrtn
总共块(扇区)写入的数量。
iostat -dx sda 1 3#指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。
util是设备的利用率。如果它接近100%,通常说明设备能力趋于饱和。
await是平均每次请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好。
5.Linux的实时监测命令(watch):
可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行。该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒执行一次"command",-d表示高亮发生变化的位置。
watch -d -n 1 'who'#每隔一秒执行一次who命令,以监视服务器当前用户登录的状况
watch -d -n 1 'df -h; ls -l'监控磁盘的使用状况,以及当前目录下文件的变化状况,包括文件的新增、删除和文件修改日期的更新等。
6.CPU的实时监控工具(mpstat):该命令主要用于报告当前系统中所有CPU的实时运行状况。
Mpstat 2 5该命令将每隔2秒输出一次CPU的当前运行状况信息,一共输出5次,如果没有第二个数字参数,mpstat将每隔两秒执行一次,直到按CTRL+C退出。
第一行的末尾给出了当前系统中CPU的数量。后面的表格中则输出了系统当前CPU的使用状况,以下为每列的含义:
列名
说明
%user
在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)*100
%nice
在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
%sys
在internal时间段里,内核时间(%) (system/total)*100
%iowait
在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq
在internal时间段里,硬中断时间(%) (irq/total)*100
%soft
在internal时间段里,软中断时间(%) (softirq/total)*100
%idle
在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100
计算公式:
total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。
mpstat -P ALL 2 3#-P ALL表示打印所有CPU的数据,这里也可以打印指定编号的CPU数据,如-P 0(CPU的编号是0开始的)
7.虚拟内存的实时监控工具(vmstat):用来获得UNIX系统有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况。vmstat首次运行时显示自系统启动开始的各项统计信息,之后运行vmstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
vmstat 1 3#这是vmstat最为常用的方式,其含义为每隔1秒输出一条,一共输出3条后程序退出。
下面将给出输出表格中每一列的含义说明:
有关进程的信息有:(procs)
r: 在就绪状态等待的进程数。
b: 在等待状态等待的进程数。
有关内存的信息有:(memory)
swpd: 正在使用的swap大小,单位为KB。
free: 空闲的内存空间。
buff: 已使用的buff大小,对块设备的读写进行缓冲。
cache: 已使用的cache大小,文件系统的cache。
有关页面交换空间的信息有:(swap)
si: 交换内存使用,由磁盘调入内存。
so: 交换内存使用,由内存调入磁盘。
有关IO块设备的信息有:(io)
bi: 从块设备读入的数据总量(读磁盘) (KB/s)
bo: 写入到块设备的数据总理(写磁盘) (KB/s)
有关故障的信息有:(system)
in: 在指定时间内的每秒中断次数。
sy: 在指定时间内每秒系统调用次数。
cs: 在指定时间内每秒上下文切换的次数。
有关CPU的信息有:(cpu)
us: 在指定时间间隔内CPU在用户态的利用率。
sy: 在指定时间间隔内CPU在核心态的利用率。
id: 在指定时间间隔内CPU空闲时间比。
wa: 在指定时间间隔内CPU因为等待I/O而空闲的时间比。
vmstat 可以用来确定一个系统的工作是受限于CPU还是受限于内存:如果CPU的sy和us值相加的百分比接近100%,或者运行队列(r)中等待的进程数总是不等于0,且经常大于4,同时id也经常小于40,则该系统受限于CPU;如果bi、bo的值总是不等于0,则该系统受限于内存。
8.当前运行进程的实时监控工具(pidstat):主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。
选项
说明
-l
显示该进程和CPU相关的信息(command列中可以显示命令的完整路径名和命令的参数)。
-d
显示该进程和设备IO相关的信息。
-r
显示该进程和内存相关的信息。
-w
显示该进程和任务时间片切换相关的信息。
-t
显示在该进程内正在运行的线程相关的信息。
-p
后面紧跟着带监控的进程id或ALL(表示所有进程),如不指定该选项,将监控当前系统正在运行的所有进程。
pidstat -p 1 2 3 -l监控pid为1(init)的进程的CPU资源使用情况,其中每隔3秒刷新并输出一次,3次后程序退出。
%usr:该进程在用户态的CPU使用率。
%system:该进程在内核态(系统级)的CPU使用率。
%CPU:该进程的总CPU使用率,如果在SMP环境下,该值将除以CPU的数量,以表示每CPU的数据。
CPU: 该进程所依附的CPU编号(0表示第一个CPU)。
pidstat -p 1 2 3 -d监控pid为1(init)的进程的设备IO资源负载情况,其中每隔2秒刷新并输出一次,3次后程序退出。
kB_rd/s:该进程每秒的字节读取数量(KB)。
kB_wr/s:该进程每秒的字节写出数量(KB)。
kB_ccwr/s: 该进程每秒取消磁盘写入的数量(KB)。
pidstat -p 1 2 3 -r监控pid为1(init)的进程的内存使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。
%MEM:该进程的内存使用百分比。
pidstat -p 1 2 3 -w监控pid为1(init)的进程任务切换情况,其中每隔2秒刷新并输出一次,3次后程序退出。
cswch/s:每秒任务主动(自愿的)切换上下文的次数。主动切换是指当某一任务处于阻塞等待时,将主动让出自己的CPU资源。
nvcswch/s:每秒任务被动(不自愿的)切换上下文的次数。被动切换是指CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。
pidstat -p 1 2 3 -tr监控pid为1(init)的进程及其内部线程的内存(r选项)使用情况,其中每隔2秒刷新并输出一次,3次后程序退出。需要说明的是,如果-t选项后面不加任何其他选项,缺省监控的为CPU资源。结果中黄色高亮的部分表示进程和其内部线程是树状结构的显示方式。
TGID: 线程组ID。TID: 线程ID。
以上监控不同资源的选项可以同时存在,这样就将在一次输出中输出多种资源的使用情况,如:pidstat -p 1 -dr。
9.报告磁盘空间使用状况(df):
df -h该命令最为常用的选项就是-h,该选项将智能的输出数据单位,以便使输出的结果更具可读性。
10.评估磁盘的使用状况(du):
选项
说明
-a
包括了所有的文件,而不只是目录。
-b
以字节为计算单位。
-k
以千字节(KB)为计算单位。
-m
以兆字节(MB)为计算单位。
-h
是输出的信息更易于阅读。
-s
只显示工作目录所占总空间。
--exclude=PATTERN
排除掉符合样式的文件,Pattern就是普通的Shell样式,?表示任何一个字符,*表示任意多个字符。
--max-depth=N
从当前目录算起,目录深度大于N的子目录将不被计算,该选项不能和s选项同时存在。
du --max-depth=1 -h仅显示子一级目录的信息。
du -sh ./*#获取当前目录下所有子目录所占用的磁盘空间大小。
du --exclude=Te* -sh ./*在当前目录下,排除目录名模式为Te*的子目录(./Test),输出其他子目录占用的磁盘空间大小。