You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Systemctl无法自动重启Symfony Messenger消费者问题求助

问题解决:Symfony Messenger Consumer 到时间限制后systemd不自动重启

核心原因

你的问题出在systemd的启动限制机制:测试时你设置了10秒的时间限制,进程每10秒就正常退出并触发重启,短时间内的重启次数超出了systemd的限制阈值,导致服务被标记为failed,停止自动重启。

解决方案

修改systemd服务配置,调整启动限制参数,允许服务频繁重启:

完整配置示例

[Unit]
Description=Symfony messenger-consume
After=network.target

[Service]
ExecStart=/usr/local/bin/php /var/www/webapplication/bin/console messenger:consume async --time-limit=3600 -vv
Restart=always
RestartSec=5
User=sysops
Type=simple
# 禁用启动频率限制,适配定期重启的场景
StartLimitIntervalSec=0
StartLimitBurst=0

[Install]
WantedBy=default.target

关键配置说明

  • StartLimitIntervalSec=0 + StartLimitBurst=0:完全关闭systemd的启动次数限制,适合这种需要定期正常退出重启的守护进程。
  • Restart=always:确保无论进程是时间限制到期正常退出,还是异常崩溃,systemd都会自动重启。
  • 测试完成后记得把--time-limit改回3600秒(1小时),符合Symfony文档的最佳实践。

额外排查点

如果修改后仍有问题,检查以下内容:

  • 查看完整服务日志:执行journalctl -u messenger-worker.service -f,确认进程退出状态码和systemd的重启触发逻辑。
  • 验证sysops用户权限:确保该用户能执行php命令、访问项目目录及相关文件。
  • 手动测试命令退出行为:执行/usr/local/bin/php /var/www/webapplication/bin/console messenger:consume async --time-limit=10 -vv,结束后用echo $?查看退出码,确认是0(正常退出)。

内容的提问来源于stack exchange,提问作者Kaharon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:07:38