监控Linux系统状态的命令.docx
- 文档编号:3450528
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:1.75MB
监控Linux系统状态的命令.docx
《监控Linux系统状态的命令.docx》由会员分享,可在线阅读,更多相关《监控Linux系统状态的命令.docx(14页珍藏版)》请在冰豆网上搜索。
监控Linux系统状态的命令
监控Linux系统状态的命令
监控Linux系统状态的命令1:
w/uptime命令查看系统负载:
w/uptime最后面三个数字表示1分钟,5分钟,15分钟平均有多少进程占用CPU。
某一时刻1颗CPU只能有一个进程在使用其资源
监控Linux系统状态的命令2:
top,查看CPU
top命令:
top回车就可以进入到top界面。
每3秒刷新一次。
默认按CPU百分比排序,可以按M键按照内存使用率大小排序。
按数字1,可以显示所有的CPU使用率详情
监控Linux系统状态的命令3:
free,查看内存状态
free命令:
free查看内存和swap使用情况,关注最后一列的available,这个数字是真正剩余的物理内存大小。
注意:
直接执行free,单位是k或者字节
free-m#以兆为单位
free-k#显示的是默认的单位
监控Linux系统状态的命令4:
iostat监控磁盘:
iostat/sar—>yuminstall-ysystat
常见使用命令:
iostat-dx1#每隔一秒钟只查看读写速度一次,更详细
iostat-dx15#每隔一秒钟刷新一次,刷新5次
iostat命令查看,如果%util使用率太高,达到90多了,甚至超过100了,说明系统出问题了,磁盘性能严重下降了,只能更换磁盘。
iotop命令查看CPU,发现读、写、io,查找CPU占用的都很高的进程
iostat-d1#去掉cpu的部分,只查看读写速度
综合工具,断定瓶颈点:
vmstat1#
vmstat110#每秒钟打印一次,打印10次。
关注:
r、b、si、so、bi、bo、id、wa
监控Linux系统状态的命令5:
vmstat,可以同时查看磁盘、CPU、内存,三个
内存不足,现象:
swpd下面的所有数字显示非0,或者si、so变成非0数字;
注意:
si相当于swapin---->从swap出去进入到内存里
so相当于swapout---->从内存出去进入swap到里
r表示进程数,几个进程在占用CPU
b表示被阻塞的进程的个数。
wa表示等待CPU的百分比
procs是进程相关的
memory是内存相关的
io是磁盘相关的
如果wa和b都大于0,说明系统出问题了。
system是软件使用的CPU
procs和system是软件方面的
memory、swap、io和CPU是硬件方面的
监控Linux系统状态的命令6:
sar查看CPU
监控网卡流量:
sar-nDEV110#只查看网卡流量,每一秒钟刷新一次,刷新10次。
sar-nDEV-f/var/log/sa/sa21#查看21号的网卡流量
sar-b#查看磁盘容量
sar-q#系统负载,ldavg-1表示系统负载;ldavg-5查看历史系统负载
yuminstall-yepel-release#安装扩展源
yuminstall-ynload#
nload#直接输入nload命令,动态显示网卡流量,按上下的方向键,切换网卡。
ethtoolens33#查看网卡ens33的具体信息
mii-toolens33#直接显示网卡的具体信息
查看28号的网卡具体的网卡流量,是根据系统启动的时间,作为标准,,DEV表示网卡设备.
查看28号流量情况
因为只有一个网卡,所以只显示一个,
rxpck/s表示网卡接收数据包的数量
txpck/s表示网卡传送数据包的速度/流量
rxkB/s表示网卡接收数据包的数量
查看磁盘负载
Sar命令查看系统负载
查询具体ens33网卡的详细信息
Supportedports:
支持10M、100M、1000M;全双工,半双工;
Speed:
传输速度
Linkdetected:
目前的连接状态
使用mii-toolens33,直接查看网卡状态和流量
直接输入nload命令之后,按向右的方向键,切换到另一个网卡。
小常识:
bit比特(带宽单位)
Byte字节(速度传输单位)
100Mb带宽单位:
Mbit/MByte8bit=1Byte,下载速度2MB/s,换成带宽速度2*8=16Mbit,100Mbit换成下载速度12.5MB/s.
监控Linux系统状态的命令7:
ps查看进程:
psaux、ps-elf、ps-eLf(查看线程)
STAT
SSleep
RRunning
s父进程
N低优先级
<高优先级
+前台进程
l多线程进程
Z僵尸进程
ls-l/proc/pid/#查看一个进程的一些详细信息。
监控Linux系统状态的命令8:
ss查看网络连接状态:
netstat-lnp(查看监听端口)、
netsat-lntp(查看TCP的链接)、
netstat-lntup(查看TCP的链接)
netstat-an(查看系统所有的网络链接)
ss-an(查看系统所有的网络链接)
抓包工具:
tcpdump
tcpdump-nn-iens33port80#抓指定网卡和端口的包
tcpdump-iens33-nnnotport22andnotport80andnothost192.168.1.120#不抓指定端口、IP的包
tcpdump-nn-iens33-c100#指定抓100个包
tcpdump-nn-iens33-w120.txt#把抓到的包,写入到120.txt文档中
tcpdump-r120.txt#读取写入文档里面的抓的包
wireshark(yuminstall-ywireshark)
tshark-nn-iens33#抓网卡33的包
tshark-iens33-n-ta-Rhttp.request-Tfields-e"frame.time"-e"ip.src"-e"http.host"-e"http.request.method"-e"http.request.uri"#查看某个I网址IP地址的网络流量
补充:
查看CPU核数
cat/proc/cpuinfo
buffer和cached的区别
buffer:
这部分内存是从CPU产生即将写入到磁盘里去的那部分数据
cached:
这部分数据是先从磁盘里读出来,然后临时存到内存里的那一部分数据。
cpu监控之二:
dstat
dstat210(每2秒采集一次共采集10次)
结果说明:
cpu:
hiq、siq分别为硬中断和软中断次数
system:
int、csw分别为系统的中断次数(interrupt)和上下文切换次数(contextswitch)。
dstat是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。
这是默认输出显示的信息:
CPU状态:
CPU的使用率。
这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况。
如果你看到"wait"一栏中,CPU的状态是一个高使用率值,那说明系统存在一些其它问题。
当CPU的状态处在"waits"时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。
磁盘统计:
磁盘的读写操作,这一栏显示磁盘的读、写总数。
网络统计:
网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。
分页统计:
系统的分页活动。
分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到pagein(换入)和pageout(换出)的值是00。
系统统计:
这一项显示的是中断(int)和上下文切换(csw)。
这项统计仅在有比较基线时才有意义。
这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。
你的服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
默认情况下,dstat每秒都会刷新数据。
如果想退出dstat,你可以按"CTRL-C"键。
大多数常用的参数有这些:
-l:
显示负载统计量
-m:
显示内存使用率(包括used,buffer,cache,free值)
-r:
显示I/O统计
-s:
显示交换分区使用情况
-t:
将当前时间显示在第一行
–fs:
显示文件系统统计数据(包括文件总数量和inodes值)
–nocolor:
不显示颜色(有时候有用)
–socket:
显示网络统计数据
–tcp:
显示常用的TCP统计
–udp:
显示监听的UDP接口及其当前用量的一些动态数据
-c:
表示只显示我们的CPU信息
-p:
表示只显示我们的进程信息
-n:
表示只显示我们的网络信息
例子:
查看全部内存都有谁在占用:
dstat-g-l-m-s--top-mem
显示一些关于CPU资源损耗的数据:
dstat-c-y-l--proc-count--top-cpu
想输出一个csv格式的文件用于以后,可以通过下面的命令:
#dstat–output/tmp/sampleoutput.csv-cdn
strace命令
strace常用来跟踪进程执行时的系统调用和所接收的信号。
通用的完整用法:
strace-ooutput.txt-T-tt-etrace=all-p28979
上面的含义是跟踪28979进程的所有系统调用(-etrace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
查看在启动dcopserver时到底程序做了什么:
#strace-f-F-o~/dcop-strace.txtdcopserver
这里-f-F选项告诉strace同时跟踪fork和vfork出来的进程,-o选项把所有strace输出写到~/dcop-strace.txt里面,dcopserver是要启动和调试的程序。
mpstat命令
mpstat是MultiProcessorStatistics的缩写,是实时系统监控工具。
报告CPU的一些统计信息,这些信息存放在/proc/stat文件中。
在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
(1)显示所有的CPU信息:
mpstat-PALL1(间隔为1s)
#mpstat-PALL52
显示了系统中CPU的各种统计信息。
–PALL选项指示该命令显示所有CPU的统计信息,而不只是特定CPU的统计信息。
参数52指示该命令每隔5秒运行一次,共运行2次。
以上输出首先显示了所有CPU的合计指标,然后显示了每个CPU各自的指标。
最后,在结尾处显示所有CPU的平均值。
列值的含义:
%usr表示处理用户进程所使用CPU的百分比。
用户进程是用于应用程序(如Oracle数据库)的非内核进程。
在本示例输出中,用户CPU百分比非常低。
%nice表示使用nice命令对进程进行降级时CPU的百分比。
在之前的部分中已经对nice命令进行了介绍。
简单来说,nice命令更改进程的优先级。
%system表示内核进程使用的CPU百分比
%iowait表示等待进行I/O所使用的CPU时间百分比
%irq表示用于处理系统中断的CPU百分比
%soft表示用于软件中断的CPU百分比
%idle显示CPU的空闲时间
%intr/s显示每秒CPU接收的中断总数
(2)显示ID为1的CPU信息:
mpstat-P11(间隔为1s);
结果说明:
(1)user:
在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程,值为(usr/total)*100;
(2)nice:
在internal时间段里,nice值为负进程的CPU时间(%),值为(nice/total)*100;
(3)system:
在internal时间段里,核心时间(%),值为(system/total)*100;
(4)iowait:
在internal时间段里,硬盘IO等待时间(%),值为(iowait/total)*100;
(5)irq:
在internal时间段里,硬中断时间(%),值为(irq/total)*100;
(6)soft:
在internal时间段里,软中断时间(%),值为(softirq/total)*100;
(7)idle:
在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%),值为(idle/total)*100;
(8)intr/s:
在internal时间段里,每秒CPU接收的中断的次数,值为(intr/total)*100;
Linux系统中的loadaverage
linux系统中的Load对当前CPU工作量的度量。
简单的说是进程队列的长度。
LoadAverage就是一段时间(1分钟、5分钟、15分钟)内平均Load。
上边0.31,0.30,0.31表示
第一位0.03:
表示最近1分钟平均负载
第二位0.02:
表示最近5分钟平均负载
第三位0.00:
表示最近15分钟平均负载
注:
linux系统是5秒钟进行一次Load采样
vmstat命令–监控CPU性能分析
vmstat是VirtualMeomoryStatistics(虚拟内存统计)的缩写,是实时系统监控工具。
该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。
vmstat反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
使用方法:
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
root@ubuntu:
~#vmstat21procs-----------memory----------—swap–
-----io-----system------cpu----rbswpdfreebuffcachesisobiboincsussyidwa1003498472315836
3819540000120001000
2表示每个两秒采集一次服务器状态,1表示只采集一次。
Linux下vmstat输出释疑:
procs
r列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
当这个值超过了CPU数目,就会出现CPU瓶颈了。
b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu表示cpu的使用状态
us列显示了用户方式下所花费CPU时间的百分比。
us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy列显示了内核进程所花费的cpu时间的百分比。
这里us+sy的参考值为80%,如果us+sy大于80%说明可能存在CPU不足。
系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
wa列显示了IO等待所占用的CPU时间的百分比。
这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id列显示了cpu处在空闲状态的时间百分比。
空闲CPU时间,一般来说,id+us+sy=100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
system显示采集间隔内发生的中断数
in列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当cs比磁盘I/O和网络信息包速率高得多,都应进行进一步调查。
每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。
系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。
上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
memory
swpd切换到内存交换区的内存数量(k表示)。
如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常。
否则,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free当前的空闲页面列表中内存数量(k表示)
buff作为buffercache的内存数量,一般对块设备的读写才需要缓冲。
cache:
作为pagecache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi从块设备读入数据的总量(读磁盘)(每秒kb)。
bo块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 监控 Linux 系统 状态 命令
![提示](https://static.bdocx.com/images/bang_tan.gif)