Linux查看系统性能
常用的分析命令
strace
netstat
perf
iostat
vmstat
等
# 使用Unixbench跑分 参考: [https://blog.51cto.com/u_15127659/4541918](https://blog.51cto.com/u_15127659/4541918) 项目地址: [https://github.com/aliyun/byte-unixbench](https://github.com/aliyun/byte-unixbench)
# 安装依赖包
yum install make gcc g++ -y
# 下载
wget -c “https://github.com/aliyun/byte-unixbench/releases/download/v5.1.6/UnixBench-5.1.6.tar.gz”
# 解压
tar xvf UnixBench-5.1.6.tar.gz
# 临时设置系统语言为en_US.UTF-8
export LC_ALL="en_US.UTF-8"
# 运行
cd UnixBench-5.1.6/UnixBench/
./Run
sar命令查看系统综合状态
# 查看cpu采样,1秒一次,采样十次
sar -u 1 10
# 查看内存采样
sar -r 1 10
# 查看io采样
sar -b 1 10
# 查看磁盘采样
sar -d 1 10
# 查看进程
sar -q 1 10
查看网卡收发包状态
# 查看网卡收发包状态
sar –n DEV 1
下图
显示了每块网卡收发包状态
;
rxkb/s
是:每秒接收包,
txkb/s
是:每秒发送包速率(以kb为单位):
查看历史负载
# 查看7点到11点45的 系统负载记录
sar -s 07:00:00 -e 11:45:00 -f /var/log/sa/sa22
使用stress进行压力测试
stress模拟系统高负载
-q | –quiet 程序在运行的过程中不输出信息 |
---|---|
-n | –dry-run 输出程序会做什么而并不实际执行相关的操作 |
-t | –timeout N 在 N 秒后结束程序 |
-c | –cpu N 产生 N 个进程,每个进程都反复不停的计算随机数的平方根 |
-i | –io N 产生 N 个进程,每个进程反复调用 sync() 将内存上的内容写到硬盘上 |
-m | –vm N 产生 N 个进程,每个进程不断分配和释放内存 |
–vm-bytes B 指定分配内存的大小 | |
–vm-stride B 不断的给部分内存赋值,让 COW(Copy On Write)发生 | |
–vm-hang N 指示每个消耗内存的进程在分配到内存后转入睡眠状态 N 秒,然后释放内存,一直重复执行这个过程 | |
–vm-keep 一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存) | |
-d | –hadd N 产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件) |
–hadd-bytes B 指定文件大小 | |
–backoff N 等待N微妙后开始运行 |
进行高负载模拟测试
# 安装stress
yum install stress -y
# 消耗4核cpu资源
stress -c 4
# 消耗内存
# 产生两个子进程,每个进程分配 300M 内存
stress --vm 2 --vm-bytes 300M --vm-keep
cpu性能分析工具
查看CPU的性能
https://www.jianshu.com/p/735210d3e2dc
# -P ALL 表示监控所有CPU,后面数字1表示间隔1秒后输出一组数据
mpstat -P ALL 1
# 间隔1秒后输出一组数据,-u表示CPU指标
pidstat -u 1
网络性能分析工具
https://blog.csdn.net/omaidb/article/details/120028318
# 查看哪个连接流量最多
iftop -P
# 查看eth0哪个连接网络流量最多
iptop -p
netstat常见用法
https://blog.csdn.net/omaidb/article/details/120617942
内存性能分析工具
vmstat查看虚拟内存状态
# 语法:vmstat [options] [delay [count]]
# 表示每2秒刷新一次
vmstat 2
# 表示每2秒刷新一次,刷新5次后退出
vmstat 2 5
磁盘性能分析常用工具
https://blog.csdn.net/omaidb/article/details/120394570
iostat磁盘性能瓶颈分析
https://blog.csdn.net/omaidb/article/details/120394570
dstat查看哪些进程占用资源最多
参考: https://www.cnblogs.com/pc-boke/articles/10076785.html
!!!注意
: 该软件只支持Centos7,需要使用epel源安装Dstat 0.7.2
Centos8安装的是pcp-dstat 5.3.1
,不支持top-mem
等参数
常用选项
–socket 显示常用的 socket 统计
–tcp 显示常用的TCP统计
–mem 显示内存使用率
–io 显示I/O统计
–int 显示终端统计
–disk-util 显示某一时间磁盘的忙碌状况
–freespace 显示当前磁盘空间使用率
–proc-count 显示正在运行的程序数量
–top-bio 指出块I/O最大的进程
–top-cpu 图形化显示CPU占用最大的进程
–top-io 显示正常I/O最大的进程
–top-mem 显示占用最多内存的进程
# 安装dstat
yum install -y dstat
查看每个进程使用的内存及所有进程使用的内存大小
# −计算出进程所占用的总的内存大小(KB为单位)
ps aux |sed 1\d | awk '{sum += $6};END {print sum} '
# −列出进程使用的内存大小,按内存大小排序(看第6列)
ps aux |sed 1\d | sort -n -k6
查看哪些进程占用内存最高
# 查看哪些进程占用内存最高
## head -20 显示前20条
ps aux --sort=-%mem | head -20
# 查看哪些进程占用内存最多--RHEL8不支持
dstat --top-mem 1 4
查看哪些进程占用cpu最高
# 查看哪些进程占用CPU最高
## head -20 显示前20条
ps aux --sort=-%cpu | head -20
# 查看哪些进程占用cpu最多--RHEL8不支持
dstat --top-cpu 3 3
查看哪些进程占用io最高
# 100秒内占用io最高的进程
dstat --top-bio 100 1
strace跟踪进程中的系统调用
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html
perf查看热点函数
https://blog.csdn.net/lyn631579741/article/details/124009633
Linux Perf commands命令介绍使用
链接:https://linuxhint.com/linux-perf-commands/