很多时候后台服务跑着跑着就频繁重启、网络时断时续,问题并不出在业务代码,而是底层环境和网络在“搞鬼”。本文整理了一套从上到下的极简排查流程,好懂、好用,照着步骤走就能快速定位根因。

一、先对症状:符合这几点,优先查环境

如果你的服务出现以下情况,别急着改代码,先排查运行环境:

  1. 服务频繁自动重启,甚至触发启动频率限制直接停摆
  2. SSH远程偶尔掉线,接口请求时好时坏,没明显规律
  3. 定时任务漏执行,日志断断续续

二、四步排查法:从易到难,快速缩小范围

第一步:先看日志,锁定退出原因

排查任何服务永远先看日志,它会直接告诉你进程为什么退出。

# 实时看运行日志
journalctl -u 你的服务名 -f

# 看今日所有历史日志
journalctl -u 你的服务名 --since "today"

# 快速看服务状态和退出码
systemctl status 你的服务名

判断要点

  • 日志大量报网络超时、连接中断 → 往网络方向查
  • 提示“进程已在运行” → 有旧进程没清干净
  • 有明确的代码报错栈 → 再回头查代码和依赖

第二步:查后台干扰进程,VPN是高频元凶

很多后台网络程序会偷偷改系统路由,重连时造成网络闪断,把服务“晃死”。

# 查拨号/VPN类进程(最常见的网络波动元凶)
ps aux | grep pppd

# 查目标服务有没有多开残留
ps aux | grep 你的进程关键字

查到非业务必需的后台进程,基本就能锁定诱因。

第三步:用ping量化网络,别凭感觉判断

网络稳不稳,发数据包测一下就知道,别靠“我感觉网还行”判断。

# 1. 测公网通不通
ping www.baidu.com

# 2. 发100个包测丢包率,揪出间歇性抖动
ping www.baidu.com -c 100

# 3. 单独测业务依赖的域名(比如告警平台、业务接口)
ping open.feishu.cn
ping api.你的业务域名.com

# 4. 禁ping就测端口
nc -zv api.你的业务域名.com 443

丢包率超过1%、延迟忽高忽低,就说明网络链路不稳定。

第四步:查系统休眠,桌面版Linux的隐形坑

如果是桌面版系统装的服务器,默认会开节能休眠,闲置后网卡断电,直接断网停任务。

# 一键关闭所有休眠、待机,永久生效
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

# 关闭网卡节能模式
sudo ethtool -s 你的网卡名 wol d

三、标准修复流程

  1. 清干扰:杀掉多余的VPN/拨号进程,关掉开机自启
  2. 固环境:关闭系统休眠和网卡节能
  3. 重启服务:按规范重启,加载正常运行环境
sudo systemctl stop 你的服务名
sudo systemctl daemon-reload
sudo systemctl start 你的服务名
  1. 验结果:盯着日志跑1-2个任务周期,配合长ping确认稳定

四、核心总结

  1. 服务不稳先查日志,别上来就改代码
  2. 无代码变更的故障,优先盯VPN、代理、系统休眠这三类高频坑
  3. 网络好不好用数据说话,长ping测丢包比凭感觉靠谱
  4. 修复完一定要观测验证,不能启动成功就完事

常用命令速查表

场景 命令
实时看服务日志 journalctl -u 服务名 -f
查VPN拨号进程 ps aux | grep pppd
测网络丢包 ping 域名 -c 100
测端口连通 nc -zv 域名 端口
关闭系统休眠 sudo systemctl mask sleep.target ...
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐