AWS Elastic Beanstalk - 当给定时间超过 300 个连接时,Puma 服务器上的套接字发生故障

AWS Elastic Beanstalk - 当给定时间超过 300 个连接时,Puma 服务器上的套接字发生故障

我一直在处理 AWS Elastic Beanstalk 环境中一个可以说是奇怪的问题。当给定时间内单个实例上有超过 300 个连接时,我收到以下 nginx 错误:

2018/03/23 20:56:53 [错误] 5431#0: *4121 connect() 至 unix:///var/run/puma/my_app.sock 失败(11:资源暂时不可用) 连接到上游时,客户端:

答案1

仔细研究问题和配置,故障与超出资源限制有关。可能是以下两个操作系统资源:

  • 打开文件描述符
  • 单个用户可用的进程。为了消除进程限制,请将 EC2 实例中的 nproc 值保持在非常高的值或无限制。

    sudo vi /etc/security/limits.conf

参考此链接简要介绍一下。由于 worker_rlimit_nofile 不能超过服务器上设置的 ulimit,因此第一种方法是计算 nginx 参数并根据要求进行调整:

我们可以提供服务worker_processes * worker_connections / ( keepalive_timout * 2 ) users per second

本扩展指南可以帮助您量化应增加和定义的值。定义完 Web 服务器的值后,您需要使用更高或相等的值来更新限制。检查服务器可支持的用户并发量,以帮助您进行扩展。

相关内容