先不要盲目重启
重启只能隐藏现场。先记录退出时间、退出码、最近一段脱敏日志和启动命令,再判断是配置错误、依赖错误、网络错误还是资源不足。
一、确认是否真的只有一个实例
`bash
ps -ef | grep -i '[h]ermes'
多个 Gateway 可能争抢端口、重复消费消息或互相覆盖状态。先停止多余实例,再保留一个前台进程复现。
二、比较前台和后台环境
前台可用而后台失败,优先检查用户、HOME、HERMES_HOME、PATH、工作目录和环境变量。后台服务不会自动继承你当前终端的所有变量。不要通过把整个环境 dump 到日志来排查,逐项输出变量名和 set/missing 状态即可。
三、按退出类型分类
- 配置解析错误:检查 YAML/JSON 格式和路径;
command not found:检查服务用户的 PATH;- 端口占用:查找占用者,避免直接杀掉不明进程;
- 认证/网络错误:检查端点、代理和凭据来源;
OOM或系统杀进程:检查内存和系统日志;- 频繁重启:降低重启频率,保留首次失败现场。
四、资源和日志策略
为日志设置轮转和大小上限,避免日志本身耗尽磁盘。检查服务用户的文件描述符、内存和磁盘空间。若任务会产生大量输出,先采用分段策略,不要让单次请求无限增长。
五、修复后的验收
前台短请求成功;后台以预期用户启动;重启后 Profile 不变;连续运行一段观察窗口没有异常退出;停止服务不会删除状态数据。定时任务问题不要只看 Gateway,应结合Cron 排查指南。