![AWS Elastic Beanstalk - 当给定时间超过 300 个连接时,Puma 服务器上的套接字发生故障](https://linux22.com/image/719477/AWS%20Elastic%20Beanstalk%20-%20%E5%BD%93%E7%BB%99%E5%AE%9A%E6%97%B6%E9%97%B4%E8%B6%85%E8%BF%87%20300%20%E4%B8%AA%E8%BF%9E%E6%8E%A5%E6%97%B6%EF%BC%8CPuma%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E5%A5%97%E6%8E%A5%E5%AD%97%E5%8F%91%E7%94%9F%E6%95%85%E9%9A%9C.png)
我一直在处理 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 服务器的值后,您需要使用更高或相等的值来更新限制。检查服务器可支持的用户并发量,以帮助您进行扩展。