linux性能分析(三)查看系统的性能指标

一 查看系统的性能指标

bash 复制代码
这里'简略'的将系统'监控指标'分为:cpu、memory、disk、network、os '五大'类

强调: 这'五类'命令的输出与'/proc'虚目录下的'文件信息'强相关

说明: 后续专门讲解'这五大类'的'系统'命令,尽可能'全面罗列'每个工具的使用'场景'

补充: 有些命令是'综合'命令,刻意查看'多种类型'各种'维度'的指标信息

本系列暂时只考虑'操作系统'的性能指标,'不考虑'相关中间件的性能指标

IAAS 虚拟机 CPU计算密集型、IO密集型、数据密集型

bash 复制代码
++++++++++++++++++  "<<性能之巅>>"  ++++++++++++++++++
bash 复制代码
类比: '人' 和 '系统'

  1、人的组成: 计算机系统的组成

  2、衡量'人'健康状况: 系统各项'指标'

① 性能分析的生命周期

② CPU

bash 复制代码
lscpu、top、nproc、cpulimit、mpstat、'/proc/cpuinfo 文件'

lscpu  : 显示CPU '架构' 的有关信息

mpstat :  显示'变化'的CPU数据

③ 内存

bash 复制代码
free、top、htop、atop、vmstat、memstat、ps、'/proc/meminfo 文件'

ps aux --sort -rss

内存相关的'内核'参数 : '/proc/sys/vm/drop_caches'

动态查看CPU和内存的占用率: ps -ef | grep '进程名' --> 获取 'pid' --> top -p $pid

查看内存占用'前10名'的程序: ps aux|sort -k4,4nr|head -n 10 

cat /proc/$pid/status  --> 'VmSize对应的值就是物理内存占用'

linux常用内存相关高级命令 linux下查看某一进程占用的内存

free -m 各输出说明 free -m 详解 free 各选项参数 腾讯 free -m 面试

buffer 和 cache的区别

④ 磁盘

bash 复制代码
df: 用来显示'磁盘空间'的'使用'和'挂载信息'等情况        --> 常用 'df -hT'

du: 显示'对应'目录下每个'子目录和文件'的'磁盘空间'使用量  --> 常用 'du -sh'

补充: ls -lsh /path/to/file

fdisk、parted 、mkfs、mount、umount  --> '磁盘分区'、'格式化文件系统'、'挂载'、'卸载'

lsblk: 列出所有'可用块设'备的信息,以及他们之间的'依赖'关系

+++++++++++++  "LVM 逻辑卷"  +++++++++++++

pvcreate、vgcreate、lvcreate     --> '物理卷'、'卷组'、'逻辑卷'

pvdisplay、vgdisplay、lvdisplay  --> 查看 'lvm' 状态信息

lvremove、vgremove、pvremove     --> 删除  '逻辑卷'

sync:  强制把'文件系统buff'的内容写入'系统磁盘'

思考: 如何查找'大 [大的标准是什么]'文件?

+++++++++++++  "innode"  +++++++++++++

场景:由于每个文件都必须有一个inode,因此有可能发生'inode已经用光',但是硬盘'还未存满'情况

注意: 避免产生'大量'的小文件,导致把'innode'系统资源耗尽

需求1: 只列出文件的'inode number'   --> stat --format=%i wzj.txt 

需求2: 显示'文件系统inode'的使用信息  --> df -i 分区、'tune2fs -l'、ls -il

sync命令

bash 复制代码
+++++++++++++  "磁盘I/O"  +++++++++++++

衡量'磁盘性能'的'基本'指标:利用率、饱和度、IOPS、吞吐量、响应时间

sar:      sar -d -p 1 2   --> 查看当前'磁盘'性能

iostat:   iostat -d -x 1  --> 只提供了观察磁盘的'整体I/O'性能数据

pidstat:  pidstat -d 1    --> 查看'哪些进程'行正在读写磁盘

iotop:    刻意按'I/O'大小对进程进行'排序'

fio:     专门测试 'iops' 的命令,对磁盘进行'压力'测试

dd:       dd 命令只能'大致 [复制原理]'测出磁盘的 IO 性能,不是非常准确

案例: time dd if=/dev/zero of=test.file bs=1G count=2 oflag=direct

vmstat:   vmstat 2 '每2s' -w '宽输出模式' 80 -t '将时间戳附加到每一行' -d '磁盘'

查看系统磁盘I/O的情况 sar命令查看磁盘 磁盘压力测试 vmstat

⑤ 网络

bash 复制代码
++++++++++++++++  "网络配置类"  ++++++++++++++++

1、ip、ifconfig、route、nmcli、hostname、ifdown、ifup、ethtool、netcat、nmtui 图形

++++++++++++++++  "网络测试类"  ++++++++++++++++

2、ping、tcping、traceroute、mtr、curl、wget、nc、telnet、dig、nslookup、nmap、arp

说明: '网络'联通性、'域名'解析、'端口'联通性、'远程'连接

补充: scp、rsync、ssh

++++++++++++++++  "网络抓包类"  ++++++++++++++++

3、tcpdump、wireshark、tshark  

备注: '网络抓包'相关

++++++++++++++++  "网络防火墙规则类"  ++++++++++++++++

4、iptables、ipset

备注: 查看和设置'防火墙'规则

反弹shell:控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端

ipset 和 iptables 配合使用 iptables+dnsmasq+ipset联合使用配置方法

netcat 反弹shell 反弹shell概念

⑥ OS

bash 复制代码
涉及: '端口'、'进程'、'线程'、'pid'、'TCP状态'、'负载'、'文件描述符'

[1]、netstat、ss  'TCP状态'

   1、netstat -s                      --> '统计信息'

   2、netstat -antlupe | grep '端口'  --> '端口占用'

   3、netstat -n | awk '/^tcp/{++s[$NF]} END { for (a in s) print a, s[a] }'

[2]、pid '相关' 信息

   ps、lsof、pstree、pidof、pidstat

   场景: df -hT 发现'删除了',但是'lsof'查看实际还'占用'

[3]、负载

   uptime、top、w

[4]、流量

   vnstat、iftop

[5]、'调试' 追踪

   strace、gdb、perf

[6]、'java' 相关

  jps、jstack、jmap、jhat、pstack

遗留: '软和硬'中断和'网络、磁盘 I/O等待'、上下文切换

awk 统计 scoekt 状态分析 conntrack 连接跟踪 conntrack为什么会崩溃

相关推荐
初学c++4 天前
sudo 命令:掌握系统权限控制,实现安全高效管理
linux命令
初学c++6 天前
smartctl 命令:查看硬盘健康状态
linux命令
初学c++9 天前
more、less 命令:阅读文本
linux命令
初学c++10 天前
rpm 命令:RedHat底层包管理器
linux命令
初学c++11 天前
localectl 命令:系统语言、键盘布局和区域设置
linux命令
初学c++11 天前
pvesm 命令:PVE存储管理
linux命令
初学c++14 天前
iostat 命令:系统状态监控
linux命令
初学c++20 天前
df 命令:显示磁盘空间使用情况
linux命令
初学c++20 天前
apt:Debian 高级包管理器
linux命令
初学c++20 天前
chattr:修改文件的特殊属性
linux命令