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

Amazon Linux 2 Worker实例重启后sqsd服务启动失败问题求助

问题根因
  1. /var/run 属于临时文件系统(tmpfs),实例重启后该目录下的所有内容会被自动清空,sqsd运行所需的/var/run/aws-sqsd/目录会在重启后被删除。
  2. 首次部署、环境重建时,Elastic Beanstalk会执行完整的预置流程,主动创建sqsd所需的临时目录、配置对应权限。但直接执行shutdown -r重启时,系统不会触发该预置流程,初始化到sqsd启动步骤时,因为目标目录不存在,无法写入pid文件就会抛出你遇到的报错。手动创建单个pid文件只能解决当前报错,其他依赖的临时目录/文件缺失问题还是会陆续触发。
可行修复方案
  • 方案1:调整sqsd的systemd服务配置,新增启动前目录创建逻辑
    编辑/etc/systemd/system/sqsd.service文件,在[Service]配置段新增以下内容:
    ExecStartPre=/usr/bin/mkdir -p /var/run/aws-sqsd && /usr/bin/chown sqsd:sqsd /var/run/aws-sqsd
    
    修改完成后执行systemctl daemon-reload使配置生效即可,后续实例重启时会自动创建sqsd所需的目录并配置权限,不会再出现启动失败问题。
  • 方案2:使用Elastic Beanstalk官方支持的重启方式
    不要直接在实例内执行shutdown命令,改为通过EB控制台或AWS CLI执行应用服务器重启操作,CLI命令参考:
    aws elasticbeanstalk restart-app-server --environment-name <替换为你的环境名称>
    
    该流程会走EB完整的初始化预置逻辑,自动完成所有依赖目录、配置的初始化,和首次部署时的流程一致,不会触发sqsd启动报错。
  • 方案3:配置系统开机自动创建对应目录
    在/etc/tmpfiles.d/目录下新建sqsd.conf文件,写入以下配置:
    d /var/run/aws-sqsd 0755 sqsd sqsd -
    
    系统开机时会自动读取该配置,创建对应的目录并设置正确权限,后续不管是手动重启还是其他方式重启,都不会出现目录缺失问题。

如果是多实例的Worker环境,建议将上述配置写入Elastic Beanstalk的.ebextensions配置文件中随代码部署,保证所有实例都会自动应用修复,不需要逐个手动配置。

内容的提问来源于stack exchange,提问作者david.emilsson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:01