文章列表
2 分钟阅读

线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看

更新说明:新增线上排障流程文章。


系列:Linux 命令基础

第 12 / 16 篇

  1. Tmux 入门教程:让 SSH 断线和多任务终端不再中断
  2. Tree 命令教程:快速查看和导出目录结构
  3. Linux 搜索命令教程:find、grep、locate、rg 应该怎么选
  4. Linux 压缩与解压命令教程:tar、zip、gzip、xz、zstd 一次讲清
  5. Linux 文本处理命令教程:cat、less、head、tail、wc、sort、uniq
  6. Linux 权限命令教程:chmod、chown、umask
  7. Linux 进程查看与管理:ps、top、htop、kill、jobs
  8. Linux 网络排查命令:ss、curl、dig、ping、traceroute
  9. systemctl 与 journalctl 入门:管理服务和查看日志
  10. rsync 使用指南:服务器文件同步与备份
  11. Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban
  12. 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看
  13. 深入浅出:Linux 树状目录神器 tree 命令的安装与使用指南
  14. Linux 系统 Vim 编辑器终极指南:从入门到精通
  15. SSH 隧道实战:本地转发、远程转发和动态转发
  16. SSH Config 使用指南:别名、跳板机与多服务器管理

线上出问题时,最怕一上来就乱改配置。我的习惯是先确认现象,再按日志、端口、进程、磁盘、网络、容器这个顺序看。

先确认问题边界

先问几个问题:

  • 是所有用户都不行,还是部分用户不行
  • 是接口慢,还是完全打不开
  • 是刚发布后出问题,还是自然发生
  • 是单台机器,还是多台机器

不要跳过这一步。它决定后面查应用、网络还是资源。

看服务状态和日志

如果是 systemd 管理:

Terminal window
systemctl status app
journalctl -u app -n 200 --no-pager

如果是 Docker:

Terminal window
docker compose ps
docker compose logs --tail=200 web

Docker 日志排查可以参考 Docker 日志和排障:logs、exec、inspect、stats

看端口是否监听

Terminal window
ss -lntp

重点看服务端口是否在监听,监听地址是 127.0.0.1 还是 0.0.0.0。如果 Nginx 转发到 127.0.0.1:8000,但应用实际没监听,通常就是 502。

网络命令可以接着看 Linux 网络排查命令:ss、curl、dig、ping、traceroute

看进程和资源

Terminal window
ps aux --sort=-%cpu | head
free -h
df -h

磁盘满会引发很多奇怪问题:日志写不进去、数据库无法写入、临时文件创建失败。

进程排查可以参考 Linux 进程查看与管理:ps、top、htop、kill、jobs

看应用健康接口

如果服务有健康检查:

Terminal window
curl -i http://127.0.0.1:8000/health

再从 Nginx 外层访问:

Terminal window
curl -i http://127.0.0.1/health

两次结果不同,说明问题可能在代理层。

看最近改动

很多线上事故和最近改动有关:

  • 刚发布的新镜像
  • 刚执行的数据库迁移
  • 刚改的 Nginx 配置
  • 证书刚续期
  • 环境变量刚调整

有 Git 或部署日志时,先把最近一次变更找出来。

一条实用原则

先收集证据,再做改动。每次只改一个点,改完马上验证。

总结

如果是临时恢复,也要记录你改了什么。否则服务虽然恢复了,下一次部署可能又把问题带回来。排障的重点不是记住所有命令,而是保持顺序:先确认现象,再收集证据,最后小步修改。

服务器基础安全也会影响排障边界。新机器上线前建议先看 Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban,避免把暴露端口、弱登录和权限问题混在业务故障里。