性能监视相关命令
- ifconfig
- top
- free 内存
- df 磁盘
- du 目录下大小
- iftop 网络流量
- netstat、lsof、ps 端口定位
- mpstat cpu
- vmstat 内存
- iostat io
常用操作命令
- 授权:chmod、chown
- 文本处理:awk数据切片、 grep数据查找定位、sed数据修改、less 查看数据、wc文本统计
ifconfig
- 1)第一行:以太网卡的名字不是常见的eth0,变成了enp0s3。
其中en代表以太网卡
p0s3代表PCI接口的物理位置为(0,3), 其中横座标代表bus,纵座标代表slot
UP:代表此网络接口为启用状态(down为关闭状态)
RUNNING:代表网卡设备已连接
MULTICAST:表示支持组播
MTU:为数据包最大传输单元 - (2)第二行:网卡的IP地址、子网掩码、广播地址
- (3)第三行:IP v6地址
- (4)第四行:Ethernet(以太网)表示连接类型;ether:表示为网卡的MAC地址
- (5)第五行:接受数据包个数、大小统计信息
- (6)第六行:异常接受包的个数、如丢包量、错误等
- (7)第七行:发送数据包个数、大小统计信息
- (8)第八行:发送包的个数、如丢包量、错误等
ipmi信息【一个通信协议,它的实现依赖于单独的硬件平台,即基板管理控制器(BMC)】
- IP 源:dhcp
- IP 地址:10.117.66.146
- 子网掩码:255.255.248.0【必须结合IP地址一起使用,将某个IP地址划分成网络地址和主机地址两部分,便于快速确定ip所在的网段】
- 默认网关:10.117.64.1【一个网络通向其他网络的IP地址,网关在网段内的可用ip中选一个,不过,一般用的是第1个和最后一个】
- Mac 地址(当前BMC):6c:92:bf:49:1c:b3【也叫物理地址、硬件地址,MAC地址是网卡决定的,是固定的,用来定义网络设备的位置】
top【sar -u】
- PID 进程id
- USER 该进程对应的用户
- PR 优先级
- VIRT 虚拟内存
- RES 常驻内存
- SHR 共享内存
- S 表示进行状态 S表示睡眠,R表示运行
- %CPU CPU占用率
- %MEN 内存占用率
- TIME+ 运行时间
shift+m 按照内存排序
shift+p 按照cpu排序
free 内存
df 磁盘
Filesystem与Mounted on区别: 前者是物理硬盘的代号,无法通过linux命令访问;后者是可以通过linux命令访问的目录,与左边的磁盘映射。
1、磁盘、分区、目录的关系
- 任何一个“分区”都必须挂载到某个“目录”上。
- “目录”是逻辑上的区分,而“分区”是物理上的区分。
linux磁盘命名方式
- IDE硬盘--->hda、hdb、hdc、hdd
- SATA硬盘-→sda、sdb、sdc、sdd
linux分区命名方式
- IDE硬盘--->hda(1-n)...hdb(1-n)...hdd(1-n)
- SATA硬盘--->sda(1-n)...sdb(1-n)...sdd(1-n)
- 其中最后一位数字,主分区是1到4,而逻辑分区是5以上的数字。
- 第一列指定文件系统的名称,其中sdb1、sda2代表实际磁盘的名称,tmpfs是临时文件系统名称,都是指物理上的存储的名称。
- 最后一列,代表磁盘挂载在哪个目录下。/根目录,挂载在/dev/sda2下,当下面的目录没有挂载在其他盘,那么所有的文件都在/dev/sda2下;当根目录下面的目录例如/mnt/data挂载到/dev/sdb1下,那么/mnt/data目录下的文件都在/dev/sdb1盘下,而不在/dev/sda2下。
- 磁盘大小都是说的sdb1、sda2这些实际盘的大小。
- “tmpfs”(临时文件系统):/run 中的文件和目录没有存储在磁盘上,而只存储在内存中。
du 指定范围
iftop 网络io 【sar -n DEV 2 3】
查看流量是从哪些端口发送出去的
- TX:发送流量
- RX:接收流量
- TOTAL:总流量
- Cumm:运行iftop到目前时间的总流量
- peak:流量峰值
- rates:分别表示过去 2s 10s 40s 的平均流量
端口定位程序【netstat、lsof、ps】
- sudo netstat -anp | grep 9099
- lsof -i :9099
- ps -ef|grep 660658
mpstat cpu
可以查看多核心的cpu中每个计算核心的统计数据
- CPU (处理器编号,all表示所有处理器的平均数值)
- %user (用户态的CPU利用率百分比)
- %nice (用户态的优先级别CPU的利用率百分比)
- %system (内核态的CPU利用率百分比)
- %iowait (在interval间段内io的等待百分比,interval 为采样频率,如本文的1为每一秒钟采样一次)
- %irq (在interval间段内,CPU的中断百分比)
- %soft (在interval间段内,CPU的软中断百分比)
- %idle (在interval间段内,CPU的闲置百分比,不包括I/O请求的等待)
- intr/s (在interval间段内所有的CPU每秒中断数)
vmstat 内存
1)procs
- r 列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU
- b.b列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
2)memory
- swp 列表示切换到内存交换区的内存数量(以KB为单位)。如果swp的值不为0或者比较大,而且si、so的值长期为0,那么这种情况一般不用担心,不会影响系统性能;
- free列表示当前空闲的物理内存数量(以KB为单位);
- buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲;
- cache列表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。
3)swap
- si列表示由磁盘调入内存 ,也就是内存进入内存交换区的数量;
- so 列表示由内存调入磁盘 ,也就是内存交换区进入内存的数量【一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足,需要考虑是否增加系统内存 】
4)IO
- bi列表示从块设备读入的数据总量(即读磁盘,单位KB/秒)
- bo列表示写入到块设备的数据总量(即写磁盘,单位KB/秒)这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。
5)system
- in列表示在某一时间间隔中观察到的每秒设备中断数;
- cs列表示每秒产生的上下文切换次数。上面这两个值越大,会看到内核消耗的CPU时间就越多。
6)CPU
- us列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。
- sy列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
- id列显示了CPU处在空闲状态的时间百分比;
- wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重 。
- st列一般不关注,虚拟机占用的时间百分比。
iostat 磁盘io 【sar -d】
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
disk属性值说明:
device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.
注:
I/O瓶颈:如果%iowait的值过高,表示硬盘存在I/O瓶颈。
CPU:%idle值高,表示CPU较空闲,%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
内存:如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
tps:每秒钟发送到的I/O请求数。
Blk_read/s:每秒读取的block数。
Blk_wrtn/s:每秒写入的block数。
Blk_read:读入的block总数。
Blk_wrtn:写入的block总数。
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
r_await:每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
如果avgqu-sz比较大,也表示有当量io在等待。
less
- less info.log 查看info.log的日志
(1)/name 在日志中匹配name的下一个, ?name 在日志中匹配name的上一个
(2)n 查看下一个 N 查看上一个
(3) ctrl + f 或者 f 下一页 ctrl + b 或者 b 上一页
(4) ctrl + d 或者 d 下半页 ctrl + u 或者 u 上半页
(5)j 下一行 k 上一行 这里 上下键也可以
(6)g 第一行开始位置 G最后一行(末尾)
(7)q 退出
(8)h 帮助
- less info.log error.log 查看info.log的文件和error.log的文件,这是查看两个文件
(1)less info.log 在打开一个文件的情况下,可以通过 :e error.log 打开error.log 第二个文件
(2):n 浏览下一个文件 :p 浏览上一个文件