avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 8.8 Linux故障排查实战教程
文章

8.8 Linux故障排查实战教程

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
6~7 分钟 阅读

• 模拟CPU飙高:

for i in $(seq 1 $(nproc)); do yes > /dev/null & done


$(nproc):获取当前机器的CPU逻辑核心数量

seq 1 $(nproc):生成一个从1开始,到你CPU核心数结束的数字序列

yes:无限循环输出“y“

▶ cpu占用过高排查思路:

(1)top查看哪个进程占用的cpu

(2)pidstat查看具体是哪个进程在占用

pidstat -u -p 进程id 1

u:查看CPU使用情况

p:指定查看某个id进程

1:每隔1秒刷新一次

-t:查看线程级别

(3)perf查看具体是程序什么代码运行占用

perf top -p 进程id

top:实时显示最热的函数

(4)确定该进程不是生产所需进程,使用kill进程号或者pkill进程名杀死该进程

• 模拟内存饱满:

▪ echo 1 > /proc/sys/vm/drop_caches 清除缓存

▪ stress-ng --vm 2 --vm-bytes 85% --vm-keep &

--vm 2:产生两个进程

--vm-bytes 85%:最高占用空闲内存85%

--vm-keep:占住不释放

▶ 内存占用过高排查思路:

(1)用free -h查看内存占用情况

(2)ps aux --sort=-%mem | head-5

查看那个进程吃了大量内存

(3)pmap -x 进程id | sort -k 3 -n | tail -20

查看进程内存详细地图,如果某块[anon]匿名内存,占用特别大,就是它在吃内存

sort -k 3 -n:按第三列,按数字排序

(4)确定该进程不是生产所需进程,使用pkill 进程名杀死该进程该进程不是所

• 模拟磁盘卡死:

dd if=/dev/zero of=/tmp/test_big_file bs=1M count=5000 &

用dd疯狂写大文件,if输入 of 输出 /dev/zero 不断写0

▶ 磁盘占用过高排查思路:

• iostat -x 1 5:查看磁盘是不是真的忙

x:显示扩展信息,能看到%util,await等关键指标

1:每隔1秒刷新一次 5:总共显示5次

主要看%util和r_await,w_await等参数

• iotop -o -b -d 1 -n 5:查看哪个进程在疯狂读写

o:只显示有I/O活动的进程,过滤掉闲着的

b:批处理模式,适合把结果保存到文件中,不用交互

d 1:每1秒刷新一次

n 5:刷新5次后退出

• 解决故障:


killall 进程名

pkill 进程名

拓展:

用blktrace看块设备级别的I/O(终极深度分析)

blktrace -d /dev/sda -w 10

blkparse -i sda | head-50

• 模拟网络堵塞:

▪ 制造大量连接:

ab -n 100000 -c 1000 http://localhost/ &

▪ 制造大量TIME_WAIT:

for i in $(seq 1 10000); do


curl -s -o /dev/null http://localhost &
done

▪ 模拟带宽占满:


wget -O /dev/null https://download.rockylinux.org/pub/rocky/ 10/isos/x86_64/Rocky-10.2-x86_64-dvd1.iso &

▶ 网络堵塞排查思路:

• ss -s:查看连接状态:

s:显示统计摘要,不看具体连接,只看总数

看timewait,如果值过高,说明大量连接在“断开后等待”,表示异常

• 如果要看具体是哪些端口:


ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn

• 用iftop看流量是谁在跑:

iftop -i ens160 -n -N

n:不解析IP为主机名

N:不解析端口为服务码

• tcpdump:抓包看具体内容:

tcpdump -i host 10.8.0.13 -w /tmp/network.pcap -c 1000

w:写入文件

-c:抓1000个包

如果想直接看,不保存:

tcpdump -i eth0 host 123.45.67.89 -nn -X | head -20

nn:既不解析ip为主机名,也不解析端口为服务名

X:同时显示十六进制和ASCII内容,能看到包里的明文数据

• 杀死进程:killall 进程名 pkill 进程名

• 拓展:

抓包查看三次握手,四次挥手:

tcpdump -i ens160 port 80 and host 10.8.0.13 -nn -S


curl www.baidu.com
Linux基础
笔记 Linux
许可协议:  CC BY 4.0
分享

相关文章

10月 11, 2026

磁盘相关命令

• 磁盘管理命令 ▪增: mount:挂载磁盘 gdisk中的n新建分区 mkfs:给分区格式化(创建新的文件系统) parted /dev/sdc mklabel gpt:创建分区表(使用GPT) parted /dev/sdc mkpart primary xfs 0 50%:创建分区,占磁盘

10月 11, 2026

压力测试

• 获取TOKEN: 安装jq: yum install -y jq TOKEN=$(curl -s -X POST http://172.20.0.7:9200/login -H "Content-Type:application/json" -d '{"username": "admin","

10月 11, 2026

Shell脚本手动配置阿里云源

#!/bin/bash #author:wz #功能:配置aliyun源 #ping阿里云镜像源网站测试连通性 ping -c 5 mirrors.aliyun.com if [[ $? -eq 0 ]];then echo "成功访问阿里云镜像源网站,继续执行" else echo "访问阿里云

下一篇

8.8 其他命令

上一篇

8.7 用户管理类命令

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy