我们的应用程序的REST API由运行在具有典型自动缩放/负载平衡设置的AWS EC2实例上的Gunicorn(不落后于Nginx)提供。负载均衡器的空闲超时为60秒,而Gunicorn的保持活动超时为2秒。我们一直在看到504 Gateway Timeout
来自此配置的零星响应。根据Amazon docs,这可能是因为服务器的保持活动超时低于负载均衡器的空闲超时设置:
原因2:注册的实例关闭与Elastic Load Balancing的连接。
解决方案2:在EC2实例上启用保持活动设置,并将保持活动超时设置为大于或等于负载均衡器的空闲超时设置。
使用Nginx时,默认keepalive_timeout
值为75秒,显然可以与ELB默认设置一起使用。但是,Gunicorn文档建议keepalive
设置为1-5秒。
将Gunicorn的keepalive提升至75秒是否有意义,还是有充分的理由将其保持在5秒以下,即使我们没有在其前面使用反向代理?