小编han*_*ten的帖子

没有 Nginx 的 ELB 后面 Gunicorn 的 Keepalive 设置

我们的应用程序的 REST API 由运行在 AWS EC2 实例上的 Gunicorn(不支持Nginx)提供服务,具有典型的自动扩展/负载平衡设置。负载均衡器的空闲超时为 60 秒,Gunicorn 的保持活动超时为 2 秒。我们一直在看到504 Gateway Timeout这种配置的零星响应。根据Amazon docs,这可能是因为服务器的保持活动超时低于负载均衡器的空闲超时设置:

原因 2:已注册实例关闭与 Elastic Load Balancing 的连接。

解决方案 2:在您的 EC2 实例上启用 keep-alive 设置,并将 keep-alive 超时设置为大于或等于您的负载均衡器的空闲超时设置。

对于 Nginx,默认keepalive_timeout值为 75 秒,这显然适用于 ELB 默认设置。但是,Gunicorn 文档建议keepalive在 1-5 秒范围内进行设置。

将 Gunicorn 的保活时间提高到 75 秒是否有意义,或者即使我们没有在它前面使用反向代理,也有充分的理由将其保持在 5 秒以下?

python load-balancing amazon-ec2 gunicorn

17
推荐指数
1
解决办法
7070
查看次数

标签 统计

amazon-ec2 ×1

gunicorn ×1

load-balancing ×1

python ×1