linux监控命令是针对服务器的运行时服务器CPU、内存、磁盘读写的监控
一、top(适用于几分钟试压)
top命令:集大成的linux监控,可以查看当前用户数量,重点是可以看到cpu和内存的使用情况
1. 整体使用情况:
第一排:使用时间以及系统用户数量
第二排:总共的进程数量以及进程的使用状态(running:运行中,sleeping:闲置,stopped:已停止)
第三排:CPU使用情况:us代表用户,sy代表系统,id代表闲置
第四排:内存情况:total代表内存总量,free代表内存闲置量,userd代表内存使用量
第五排:分区情况
重点需要关注的是CPU使用情况和内存使用情况
2. 具体各个程序使用情况:
PID: 代表程序的运行ID
%CPU: 代表CPU使用情况
%MEN: 代表内存使用情况
TIME+COMMAND: 代表时间以及程序名称或者是程序路径
3. top详细命令:
top:每隔5秒显示所有进程的资源占用情况(系统默认)
top -d 2:每隔2秒显示所有进程的资源占用情况
top -c:每隔5秒显示进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789 //每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
注意:有时候压测时可能CPU会显示300%或者400%,这个是和机器的核数有关系,如果是三核,最高就是300%,如果是四核,最高就是400%,可以通过mpstat -P ALL查看到CPU的核数
4. 在实际压测当中,什么时候用top?
一般是在试压时候,对系统进行压测3-5分钟,利用top命令查看cpu和内存的使用情况,长时间压测需要使用nmon工具
二. nmon(适用于正式压测):可以帮助我们定时采集
1. 安装nmon工具,在命令框输入apt-get install nmon,系统自动下载安装nmon工具
2. 安装完毕后,输入nmon,进入nmon界面
3. 一般nmon我们是用来定时采集数据,所以需要建立一个data文件,利用mkdir /root/soft/data在指定路径下创建一个data文件用来采集数据
4. 利用nmon -s10 -c60 -f -m /root/soft/data收集数据
参数解释:
-s 10 每 10 秒采集一次数据。
-c 60 采集 60 次,即为采集十分钟的数据。
-f 生成的数据文件名中包含文件创建的时间。
-m 生成的数据文件的存放目录。
这样就会生成一个 nmon 文件,并每十秒更新一次,直到十分钟后。
生成的文件名如: _090824_1306.nmon ,"" 是这台主机的主机名。
例句:nmon -s30 -c1440*2 -f -m /root/nmon 数据采集一天
nmon -s60 -c720 -f -m /root/nmon 数据采集半天
5. 利用nmon标准模板导入收集的nmon文件,利用宏模块生成图表,可以另存为其他execl文件
A. 首先将linux系统中的nmon文件拷贝到本地中
B. 打开nmon图表生成模板--execl宏
C. 打开模板execl宏,将linux的nmon文件导入进来
D. 导入后自动生成图表execl文件并保存,保存后则可以查看nmon分析文件(主要还是关注CPU,内存MEN,磁盘IO)
主要查看的图:sys sum图表、men图表、disk sum图表
CPU细分:user%表示用户使用状况,sys%表示系统使用状况,wait%表示等待状况,idle%表示闲置状况
注意:一般情况下CPU利用率里User%应占70%左右,Sys%应占30%左右,如果Sys%或Wait%占比等于或超过了User%,则应该关注是什么引起了过多的系统消耗,有可能是系统自身大量的磁盘读写造成的,也有可能是网络问题Network I/O消耗系统的调用。
http://blog.itpub.net/12778571/viewspace-510311/ 宏问题
http://blog.csdn.net/saraul/article/details/8570781 图标分析
http://blog.csdn.net/he_jian1/article/details/41039709/ 指标说明
三、iotop:查看磁盘读写情况,定位程序,查看哪个程序对系统IO的消耗比较大
1. 输入apt-get stall iotop下载iotop工具
2. 输入iotop,查看磁盘读写情况,可以方便我们定位程序
DISK READ: 磁盘读取
DISK WRITE: 磁盘编写
SWAPIN: 磁盘交换
IO>: 磁盘使用率
COMMAND: 执行程序
四、ps:该命令用于将某个时间点的进程运行情况选取下来并输出,process之意,它的常用参数如下:
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出
其实我们只要记住ps一般使用的命令参数搭配即可,它们并不多,如下:
ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态
ps -ef:显示所有当前情况下的进程
ps -ef | grep 进程名:显示某个程序的进程情况
与ps连用的命令:kill命令
该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:
kill -signal PID
kill -9 PID:强制终止指定PID进程
signal的常用参数如下:
注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。
1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
9:SIGKILL,强制中断一个进程的进行
15:SIGTERM,以正常的结束进程方式来终止进程
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
例如:
# 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
kill -SIGTERM %1
# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
kill -SIGHUP PID
五、单项监控数据查看:
A. free命令:查看内存的使用情况(top命令已经包含)
total:内存总数
used:内存使用数
free:内存未使用数
shared:共享内存数
B. mpstat命令:查看CPU使用情况(top命令已包含)
mpstat -P ALL:将CPU的所有情况与每一个核的CPU使用情况罗列出来(下图为4核),all的CPU数据是取的4个核CPU使用的平均数
CPU 处理器ID
user :在internal时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100
nice :在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
system: 在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
intr/s :在internal时间段里,每秒CPU接收的中断的次数intr/total)*100
CPU总的工作时间=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操作请看:http://blog.sina.com.cn/s/blog_3dbab2840100j4ey.html
C. iostat:查看磁盘使用情况(top命令已包含)
iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息
查看某一个磁盘使用情况:iostat -d sda 2(sda2是磁盘名称)
D. vmstat:查看内存使用情况(top命令已包含):更多的是对于内存交换的监控,显示所有与内存和进程相关信息的命令
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
vmstat 2 1:2表示每个两秒采集一次服务器状态,1表示只采集一次
vmstat 2:这表示vmstat每2秒采集数据,一直采集,直到我结束程序
E. netstat:查看网络情况
端口查看:netstat -ntlp(查看ip和端口)