一 查看系统的性能指标
- 这里'简略'的将系统'监控指标'分为:cpu、memory、disk、network、os '五大'类
-
- 强调: 这'五类'命令的输出与'/proc'虚目录下的'文件信息'强相关
-
- 说明: 后续专门讲解'这五大类'的'系统'命令,尽可能'全面罗列'每个工具的使用'场景'
-
- 补充: 有些命令是'综合'命令,刻意查看'多种类型'各种'维度'的指标信息
-
- 本系列暂时只考虑'操作系统'的性能指标,'不考虑'相关中间件的性能指标
++++++++++++++++++ "<<性能之巅>>" ++++++++++++++++++
- 类比: '人' 和 '系统'
-
- 1、人的组成: 计算机系统的组成
-
- 2、衡量'人'健康状况: 系统各项'指标'
① 性能分析的生命周期
② CPU
- lscpu、top、nproc、cpulimit、mpstat、'/proc/cpuinfo 文件'
-
- lscpu : 显示CPU '架构' 的有关信息
-
- mpstat : 显示'变化'的CPU数据
③ 内存
- 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 面试
④ 磁盘
- 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
- +++++++++++++ "磁盘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
⑤ 网络
- ++++++++++++++++ "网络配置类" ++++++++++++++++
-
- 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联合使用配置方法
⑥ OS
- 涉及: '端口'、'进程'、'线程'、'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等待'、上下文切换