0

Linux服务器故障排查指南:从网络到应用层10种常见问题全搞定

2026.05.22 | youres | 13次围观

前言

跑Linux服务器的兄弟们,基本上都经历过这种时刻——半夜收到报警短信,SSH连不上,网站打不开,手心冒汗,大脑一片空白。别慌,Linux服务器故障排查说白了就是一套方法论,掌握了之后,大多数问题都能在10分钟内定位到原因。这篇文章我把自己这些年踩过的坑和总结的排查流程整理出来,希望能帮到大家。

一、故障排查的基本思路

排查服务器故障,最忌讳的就是上来就瞎折腾。我的建议是按照从外到内、从简单到复杂的原则来:

  1. 先确认故障现象——到底是网站打不开、SSH连不上、还是服务卡死?不同现象对应不同的排查方向。
  2. 分层排查——网络层、系统层、应用层,逐层缩小范围。
  3. 看日志——日志是最诚实的证人,90%的故障原因都藏在日志里。
  4. 不要同时改多个地方——改一个,测试一个,确认有效再继续。

二、网络连接类故障

2.1 服务器无法连接外网

这是最常见的故障之一。排查步骤:

  • ping 网关地址,确认内网通不通
  • ping 8.8.8.8,确认外网IP层通不通
  • nslookup baidu.com,确认DNS解析正不正常
  • 检查路由表:ip route show
  • 检查防火墙规则:iptables -L -nfirewall-cmd --list-all

如果ping网关都不通,检查网卡状态:ip addr show,看IP地址有没有丢失。很多时候是网卡配置被覆盖了或者DHCP租约到期没续上。

2.2 端口不通的问题

防火墙放行了但外部还是连不上?注意检查这几个点:

  • 服务本身是否监听了正确的地址(ss -tulpn | grep 端口号
  • 云服务器的安全组规则是否放行(这个经常被遗忘)
  • SELinux是否拦截了(getenforce 查看状态)

三、系统资源类故障

3.1 CPU负载过高

tophtop 看一下哪个进程在吃CPU。常见原因:

  • 死循环代码——Web应用写了个死循环,CPU直接拉满
  • 恶意进程——被挖矿了,top里面能看到不认识的进程在跑
  • 编译任务——有人在线上服务器编译软件

定位到进程后,kill -9 PID 干掉,然后排查根因。如果是被入侵了,赶紧做安全加固。

3.2 内存不足

内存不足的典型表现是服务变慢甚至被OOM Killer杀进程。快速排查:

  • free -h 看总内存和剩余内存
  • topM 键按内存排序,看谁吃得多
  • 检查swap使用情况:swapon --show
  • 查看被OOM Kill的进程:dmesg | grep -i oom

临时解决可以清理缓存:sync && echo 3 > /proc/sys/vm/drop_caches,但治标不治本,还是要找到吃内存的元凶。

3.3 磁盘空间满了

这个坑大家踩过太多次了。快速清理:

  • df -h 看哪个分区满了
  • du -sh /* 逐层找出大目录
  • 清理日志:journalctl --vacuum-time=7d
  • 清理旧的包缓存:apt cleanyum clean all
  • 检查 /tmp 目录有没有堆积大量临时文件

四、服务异常类故障

4.1 Web服务(Nginx/Apache)启动失败

最常见的原因是配置文件写错了:

  • Nginx:nginx -t 检查配置语法
  • 端口被占用:ss -tulpn | grep :80
  • 权限问题:检查网站目录的属主和权限
  • SSL证书过期:openssl x509 -in cert.pem -noout -dates

4.2 数据库(MySQL)故障

  • 启动失败先看错误日志:tail -100 /var/log/mysql/error.log
  • 常见原因:磁盘满、配置参数错误、表损坏
  • 修复表:mysqlcheck -u root -p --auto-repair --all-databases
  • 连接数满了:show processlist; 看一下谁占着连接不释放

4.3 Docker容器异常退出

  • docker ps -a 查看所有容器状态
  • docker logs 容器名 看退出日志
  • 资源限制导致OOM:docker stats 看资源使用
  • 重启策略没配置好,在docker-compose.yml里加上 restart: always

五、系统无法启动

这是最让人头疼的情况,但别慌,一步步来:

  • BIOS/UEFI阶段——检查启动顺序,确认硬盘被识别
  • GRUB引导阶段——如果出现grub rescue>,用Live CD重新安装GRUB
  • 内核加载阶段——dmesg 看有没有驱动加载失败
  • 文件系统检查——进入单用户模式执行 fsck -y /dev/sda1

平时养成快照备份的习惯,遇到启动不了直接回滚是最快的解决办法。

六、排查必备工具清单

工具用途
top / htop实时查看CPU、内存、进程
df / du磁盘空间查看
ss / netstat网络连接和端口状态
journalctl / tail查看系统和服务日志
dmesg内核消息和硬件信息
strace跟踪系统调用,排查程序挂起
tcpdump抓包分析网络问题
iotop磁盘IO使用情况
smartctl硬盘健康状态检查
nc / telnet端口连通性测试

七、日常预防比排查更重要

说实话,大部分生产环境的故障都是可以预防的。建议做好这几件事:

  • 监控告警——Zabbix、Prometheus,提前发现问题
  • 日志轮转——配置logrotate,别让日志把磁盘撑爆
  • 定期备份——数据库和配置文件都要备份,异地备份最好
  • 资源限制——用cgroup或Docker限制每个服务的资源上限
  • 变更记录——每次改配置都要记录,出问题能快速回滚

写在最后

Linux服务器故障排查没有什么捷径,就是多练多总结。每次遇到问题都记下来,下次再遇到类似的就能秒定位。希望这篇文章能帮你在故障来的时候心里有底,不慌不乱。如果你在排查过程中遇到了什么奇葩问题,欢迎在评论区交流。

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论
881文章数 0评论数
作者其它文章