3.Linux 服务上线后,从哪里开始排查?
wabicai
# 3.Linux 服务上线后,从哪里开始排查?
这里以 systemd 管理的单机服务为例。容器和 Kubernetes 的命令不一样,但排查顺序相似:先看服务是否起来,再看日志和业务请求,最后决定修复还是回滚。
# 发布前要留什么?
至少留住上一版可用产物,并记下这次部署的版本和配置。健康检查怎么做、出问题时如何切回上一版,也应在发布前确定。数据库迁移要单独看,回退代码不等于能回退数据。
# 服务没起来,先看状态和日志
my-service.service 是示意名称,使用时换成实际服务名。下面两条命令只读:
systemctl status my-service.service
journalctl -u my-service.service -n 100 --no-pager
1
2
2
先看退出码、启动错误、配置是否读取成功,再看端口和依赖连接。active 只能说明进程还在,不等于用户请求正常;还要测健康检查和关键接口,并看错误率、延迟有没有变化。
# 哪些情况该回滚?
如果新版本无法启动,或者关键请求持续失败,先按预先确定的方案恢复上一版,再验证服务和接口。不要在没确认故障范围、数据兼容性和回退目标时反复重启。
服务已启动但请求失败,重点查反向代理、下游连接和请求日志;发布后只是变慢,则看 CPU、内存、慢请求及数据库耗时。问题解决后记下出错版本、时间线和原因,下次发布才知道要提前挡哪一步。
资料:systemd systemctl 手册 (opens new window)、journalctl 手册 (opens new window)。