我有一个使用 运行 Ruby on Rails 的 Elastic Beanstalk 实例Puma with Ruby 2.6 running on 64bit Amazon Linux/2.11.7
,该实例缩放到c5.2xlarge
和一个 数据库db.m5.large
。
该实例无法处理针对主页的 500 个以上并发 GET 请求,否则将返回 502 网关状态。没有执行任何操作,并且 CPU 利用率通常保持在 左右30%
。
我通常会从 NGINX 日志中收到以下错误:
connect() to unix:///var/run/puma/my_app.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: xx.xx.xx.x, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/", host: "domain.com"
请注意:出于隐私原因,我隐藏了我的域名和 IP。
我尝试了许多解决方案,并联系了亚马逊支持,但都无济于事。
任何帮助将不胜感激。
答案1
如果您在 Amazon Linux 1 中运行,请查看以下答案:https://stackoverflow.com/a/66201704/384964。
要点是 Beanstalk 已经设置了 Puma,因此您需要将您的 puma gem 移至开发中。
如果您使用的是 Amazon Linux 2,则不会遇到此问题,但需要设置 Procfile 来运行您的 rails 服务器。