Linux性能监控常用工具
先上Brendan D. Gregg总结的linux性能监控常用工具图~
uptime机器启动时间+负载
查看机器的启动时间,登录用户,平均负载情况。
[root@VM_centos src]# uptime
13:01:52 up 46 days, 22:03, 4 users, load average: 0.13, 0.08, 0.05
- 系统已运行时间
- 前在线用户:4个用户,是总连接数量
- 系统平均负载”0.13,0.08,0.05,为最近1分组,5分钟,15分钟的系统负载情况。
系统的平均负载是指在特定的时间间隔内队列中运⾏的平均进程数。如果⼀个进程满⾜以条件,它就会位 于运⾏队列中。
- 它没有在等待I/O操作的结果。
- 它没有主动进⼊等待状态(也就是没有调⽤’wait’相关的系统API )
- 没有被停⽌(例如:等待终⽌)。
负载说明(现针对单核情况,不是单核时则乘以核数): - load<1:没有等待
- load==1:系统已⽆额外的资源跑更多的进程了
- load>1:进程都堵着等待资源
PS: - 查看cpu信息:cat /proc/cpuinfo
- 查看cpu核数:grep ‘model name’ /proc/cpuinfo | wc -l
ulimit用户资源
Linux系统对每个登录的⽤户都限制其最⼤进程数和打开的最⼤⽂件句柄数。为了提⾼性能,可以根据硬件资源的具体情况设置各个⽤户的最⼤进程数和打开的最⼤⽂件句柄数。可以⽤ulimit -a来显示当前的各种 系统对⽤户使⽤资源的限制。
设置用户最大进程数
ulimit -u 1024
设置用户可以打开的最大文件句柄数
ulimit -n 65530
pidstat进程资源
# pidstat [option] interval [count]
root@ubuntu:/home/yyy/Desktop# pidstat -urd -p 1
Linux 5.8.0-50-generic (ubuntu) 2021年05月16日 _x86_64_ (4 CPU)
06时10分10秒 UID PID %usr %system %guest %wait %CPU CPU Command
06时10分10秒 0 1 0.00 0.01 0.00 0.00 0.02 2 systemd
06时10分10秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
06时10分10秒 0 1 1.75 0.01 168888 13236 0.33 systemd
06时10分10秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
06时10分10秒 0 1 16.97 6.27 1.78 2 systemd
*-u 输出CPU的使⽤信息
*-r 输出内存的使⽤信息
*-d 输出磁盘I/O的使⽤信息
CPU信息
- %usr #⽤户层任务正在使⽤的CPU百分⽐(with or without nice priority ,NOT include time spent running a virtual processor)
- %system #系统层正在执⾏的任务的CPU使⽤百分⽐
- %guest #运⾏虚拟机的CPU占⽤百分⽐
- %CPU #所有的使⽤的CPU的时间百分⽐
- CPU #处理器数量
free
此命令用于显示系统内存使用情况,包括总体内存,已经使用的内存;还可用于显示系统内核使用的缓冲区,包括缓冲buffer和缓存
oot@ubuntu:/home/yyy/Desktop# free
total used free shared buff/cache available
Mem: 4000696 1536436 1024972 24012 1439288 2168324
Swap: 2097148 0 2097148
#可以加-h 可读性好一些
CPU使用情况监听
vmstat
显示内核线程、虚拟内存、磁盘I/O、陷阱和CPU占用率的统计信息。
root@ubuntu:/home/yyy/Desktop# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1011736 57788 1382336 0 0 14 7 28 48 0 0 100 0 0
·
- buff:是I/O系统存储的磁盘块⽂件的元数据的统计信息。
- cache:是操作系统⽤来缓存磁盘数据的缓冲区,操作系统会⾃动⼀调节这个参数,在内存紧张时操作 系统会减少cache的占⽤空间来保证其他进程可⽤。
- cs:参数表示线程环境的切换次数,此数据太⼤时表明线程的同步机制有问题。
- si和so较⼤时,说明系统频繁使⽤交换区,应该查看操作系统的内存是否够⽤。
- bi和bo代表I/O活动,根据其⼤⼩可以知道磁盘I/O的负载情况
mpstat
此命令⽤于实时监控系统CPU的⼀些统计信息,这些信息存放在/proc/stat⽂件中,在多核CPU系统⾥, 不但能查看所有CPU的平均使⽤信息,还能查看某个特定CPU的信息。
使用方式:
监控磁盘I/O
istat IO
该命令⽤于监控CPU占⽤率、平均负载值及I/O读写速度等。 await指的是平均等待时间,⼀般都在10ms左右。
- rrqm/s: 每秒对该设备的读请求被合并次数,⽂件系统会对读取同块(block)的请求进⾏合并
- wrqm/s: 每秒对该设备的写请求被合并次数
- r/s: 每秒完成的读次数 w/s: 每秒完成的写次数
- rkB/s: 每秒读数据量(kB为单位)
- wkB/s: 每秒写数据量(kB为单位)
- avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
- avgqu-sz: 平均等待处理的IO请求队列⻓度
- await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
- svctm: 平均每次IO请求的处理时间(毫秒为单位)
- %util: 采⽤周期内⽤于IO操作的时间⽐率,即IO队列⾮空的时间⽐率
查看分区使用swapon
使用:swapon -s
swap 分区通常被称为交换分区,这是⼀块特殊的硬盘空 间,即当实际内存不够⽤的时候,操作系统会从内存中取出⼀部分暂时不⽤的数据,放在交换分区中,从 ⽽为当前运⾏的程序腾出⾜够的内存空间。 也就是说,当内存不够⽤时,我们使⽤ swap 分区来临时顶 替。
df、du
df -h
du常⽤的选项:
- -h:以⼈类可读的⽅式显示,显示M或K
- -a:显示⽬录占⽤的磁盘空间⼤⼩,还要显示其下⽬录和⽂件占⽤磁盘空间的⼤⼩
- -s:显示⽬录占⽤的磁 盘空间⼤⼩,不显示其下⼦⽬录和⽂件占⽤的磁盘空间⼤⼩
- -c:显示⼏个⽬录或⽂件占⽤的磁盘空间⼤ ⼩,还要统计它们的总和 du
- -a 显示⽬录和⽬录下⼦⽬录和⽂件占⽤磁盘空间的⼤⼩。直接使⽤-a 以字节为单位,
- -ha 如下图以M 或K为结果显示。
- du -s 显示当前所在⽬录⼤⼩
- du -s -h home 显示home⽬录⼤⼩
- du -c 显示⼏个⽬录或⽂件占⽤的磁盘空间⼤⼩,还要统计它们的总和
- du -lh --max-depth=1 : 查看当前⽬录下⼀级⼦⽂件和⼦⽬录占⽤的磁盘容量。
网络相关
ip 、ifconfig查看和设置网络
现在一般ip用的多一些,笔者工作中多用到,这里就不记录了。
nc
验证服务器端口有没有开放。
常用实例:
mtr连通性
mtr命令是Linux系统中的⽹络连通性测试⼯具,也可以⽤来检测丢包率。
例如: mtr www.baidu.com
可以模拟丢包:
sudo tc qdisc add dev eth0 root netem loss 10%
netstat
显示网络链接,端口信息
iptraf强⼤的⽹络监控
iptraf是⼀个实时监控⽹络流量的交互式的彩⾊⽂本屏幕界⾯。它监控的数据⽐较全⾯,可以输出TCP连 接、⽹络接⼝、协议、端⼝、⽹络包⼤⼩等信息,但是耗费的系统资源⽐较多,且需要管理员权限。 使⽤⽅式:sudo iptraf
tcpdump
常用网络状况分析工具,抓包实用工具~
tcpdump -i eth1 -w port xx dump.pcap
在eth1中抓包xx端口的包
sar
多功能监控工具,使用简单,可以读取读秒的网卡存取速度,适合线上排查问题
sar -n DEV 1
此命令除了可以⽤于查看⽹卡的信息,还可以⽤来收集如下服务的状态信息。
- -A:所有报告的总和。
- -u:CPU利⽤率。
- -v:进程、I节点、⽂件和锁表状态。
- -d:硬盘的使⽤报告。
- -r:没有使⽤的内存⻚⾯和硬盘快。
- -g:串⼝I/O的情况。
- -b:缓冲区的使⽤情况。
- -a:⽂件的读写情况。
- -c:系统的调⽤情况。
- -R:进程的活动情况。
- -y:终端设备的活动情况。
- -w:系统的交换活动。
——持续更新——