跳到主要内容
lanzai.co
返回

Linux 服务器常见问题排查

服务器出问题先别慌,按下面几个维度逐步排查。

系统负载高

uptime                    # 负载均值
top                       # 实时进程,按 CPU/内存排序
htop                      # 更友好的 top
ps aux --sort=-%cpu | head    # CPU 占用前几名
ps aux --sort=-%mem | head    # 内存占用前几名

load average 的三个数字接近核数即可,超过核数数倍说明过载。

内存不足 / OOM

free -h                   # 内存概况
dmesg | grep -i oom        # 查看被杀进程

可疑进程排查后,用 kill <pid> 处理,或优化应用内存。

磁盘空间

df -h                     # 分区使用率
du -sh /var/* | sort -h   # 找大目录
du -h --max-depth=2 /var/log | sort -h | tail
journalctl --disk-usage   # 系统日志占用

日志清理:

sudo journalctl --vacuum-size=200M

端口占用

ss -tlnp                  # 监听端口及对应进程
ss -tlnp | grep :80
lsof -i :8080             # 谁占了 8080

网络问题

ping -c 4 example.com     # 连通性
curl -I http://localhost  # 本地服务响应
traceroute example.com    # 路由追踪
ss -s                     # 连接统计

域名解析排查:

dig example.com +short
nslookup example.com

服务无法启动

sudo systemctl status myservice        # 状态与最近日志
sudo journalctl -u myservice -n 50     # 最近 50 行日志
systemctl list-unit-files | grep myservice   # 是否开机自启

进程异常

pgrep -a nginx            # 按名字找进程
kill -9 <pid>             # 强制杀(最后手段)
ps -ef --forest           # 进程树,找孤儿进程

一个通用的排查顺序

  1. 先看系统资源:uptime、free -h、df -h
  2. 再看服务状态:systemctl status、日志
  3. 最后查网络:端口监听、域名解析、连通性

按顺序来,大部分问题十分钟内能定位。


分享这篇文章:

上一篇
Nginx 安装与基础配置
下一篇
SSH 密钥配置与免密登录