Linux 系统性能 & 故障排查

Updated on with 0 views and 0 comments

Linux 系统性能 & 故障排查

一、系统负载高排查

先看负载,再区分 CPU / 内存 / IO 瓶颈,用 top/ps 定位进程,iostat/vmstat 确认瓶颈,结合日志判断是业务问题、攻击还是资源不足。

1. 先看负载

uptime

image.png
当前时间 、系统运行了多久 、 负载 1 分钟、5分钟、15分钟。负载高不一定 CPU 高,可能是 IO 等待 / 锁等待
这里数值应该小于cpu的核心数的0.7-0.8为正常、等于cpu的核心数则刚好跑满、大于cpu的核心数会开始拥堵。
load < 核心数:轻松
load ≈ 核心数:满负载,还能扛
load > 核心数:偏高,开始排队
load > 2× 核心数:严重拥堵,必卡

2. 区分类型

image.png

CPU 高

top 按 1 看多核

shift + P 按 CPU 排序

看是否死循环、爬虫、挖矿、压测

内存高

free -h

shift + M 按内存排序看是否内存泄漏、OOM

IO 高(% wa 高)

iostat -x 1
iotop

常见:MySQL 刷盘、大量日志写入、磁盘坏道

上下文切换 / 中断高

vmstat 1

二、磁盘 100% 排查

1. 两步定位

df -h      # 看哪个分区满
df -i      # 看是否 inode 满

2. 找大文件

du -sh ./* | sort -rh
find / -type f -size +1G | sort -rh

3. deleted 文件(进程占用已删文件)

lsof | grep deleted

4. inode 满处理

for d in /*; do echo $d; find $d -type f | wc -l; done
# 清理大量小文件
find /var/spool/postfix/maildrop -type f -delete

三、端口监听 / 访问失败排查

1. 看是否监听

ss -tulnp | grep 端口 
netstat -tulnp | grep 端口

2. 常见原因

  • 服务未启动 / 启动失败
  • 端口被其他进程占用
  • 监听地址为 127.0.0.1,外部无法访问
  • 防火墙 firewalld/iptables/ufw 未放行
  • 云厂商安全组未放行
  • SELinux 拦截
  • 内核参数限制

3. 连通性测试

telnet IP 端口
nc -zv IP 端口
curl IP:端口

四、内存溢出 & OOM 排查

1. 内存不足表现

  • cannot allocate memory
  • 应用无故退出
  • 系统卡顿

2. 查看

free -h
dmesg | grep -i oom

dmesg:查看内核日志

grep -i oom:过滤出包含 OOM 的信息(不区分大小写)

用途:查系统是否发生过「内存溢出被杀进程」

3. 处理

  • 杀无用进程
  • 增加 SWAP
  • 调整应用内存配置
  • 排查内存泄漏
  • K8s/Docker 看 cgroup 限制

标题:Linux 系统性能 & 故障排查
作者:zhongts
地址:http://zhongts.cc:8080/articles/2026/04/04/1775282756420.html