Elastic Beanstalk 工作层已降级,SQS 守护程序不断重复“init:初始化 aws-sqsd 3.0.3”

Elastic Beanstalk 工作层已降级,SQS 守护程序不断重复“init:初始化 aws-sqsd 3.0.3”

环境将会降级,并且无法发送任何消息。

平台是使用 dockerrun.aws.json 的 Docker。容器是 Django 应用程序。我尝试了两种实例类型(我从 EC2 仪表板确认了这一点)t2.micro t2.small

有时,部署后,SQS 守护程序会不断重复初始化,CPU 使用率将达到最大值

2022-03-23T07:47:51Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:47:56Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:01Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:07Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:12Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:18Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:23Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:28Z init: initializing aws-sqsd 3.0.3 (2020-11-04)
2022-03-23T07:48:33Z init: initializing aws-sqsd 3.0.3 (2020-11-04)

要修复它,我需要重新部署应用程序,但这并不总能修复它。我以为是内存问题,但它确实在 t2.micro 中工作过一次。我想做一个内存分析,但看起来工作量太大了。

我试过了:

  • 使用先前的平台版本
  • 从头开始重建环境

答案1

这是因为 SQS Daemon 找不到 pid 文件。我遇到了同样的问题并已修复。

  1. 像下面这样编辑 /etc/systemd/system/sqsd.service 文件。
[Unit]
Description=This is sqsd daemon
PartOf=aws-eb.target

[Service]
User=sqsd
Type=forking

ExecStartPre=/bin/sh -c "mkdir -p /var/run/aws-sqsd"
ExecStart=/bin/sh -c "/opt/elasticbeanstalk/lib/ruby/bin/aws-sqsd start"
ExecStartPost=/bin/sh -c "systemctl show -p MainPID sqsd.service | cut -d= -f2 > /var/run/aws-sqsd/default.pid"
ExecStartPost=/bin/sh -c "ln -s /var/run/aws-sqsd/default.pid /var/pids/sqsd.pid"

ExecStopPost=/bin/sh -c "rm -f /var/run/aws-sqsd/default.pid"
ExecStopPost=/bin/sh -c "rm -f /var/pids/sqsd.pid"
Restart=always

EnvironmentFile=/opt/elasticbeanstalk/config/private/ruby_common_env

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=sqsd

[Install]
WantedBy=multi-user.target
  1. 重新加载 SQS 守护进程:systemctl daemon-reload
  2. 重新启动 SQS 守护进程:systemctl restart sqsd

相关内容