我希望使用运行 Apache 或 NGINX 的实例作为 Elastic Load Balancing (ELB) 的后端服务器。应使用哪些设置才能获得最佳性能?

负载均衡器的最佳设置取决于您的使用案例。要实现最佳性能,您必须分析后端应用程序的响应时间以及客户端的要求。

如果后端正在运行 Apache 或 NGINX,则以下参数会影响请求处理。
注意:更新配置之后,请重新启动 Apache 或 NGINX。

客户端标头超时(在 Apache 中为 Timeout;在 NGINX 中为 client_header_timeout
将应用程序超时值设置为高于负载均衡器空闲超时值,以确保负载均衡器正确关闭空闲连接。如果后端服务器在未通知负载均衡器的情况下终止连接,则会收到 504 错误。

保持活动(在 Apache 中为 KeepAlive;在 NGINX 中为 keepalive_disable
启用保持活动以减少 CPU 占用率并改善响应时间。启用保持活动时,负载均衡器无需为每个 HTTP 请求建立新的 TCP 连接。

保持活动超时(在 Apache 中为 KeepAliveTimeout;在 NGINX 中为 keepalive_timeout
如果启用保持活动选项,请选择比应用程序超时更长的保持活动超时。

读取超时(在 Apache 中为 RequestReadTimeout;在 NGINX 中为 client_header_timeoutclient_body_timeout
设置适合应用程序响应时间的读取超时,使得您的负载均衡器保持连接打开足够长的时间,以便接收请求的标头和正文。

警告:请确保负载均衡器空闲超时值低于后端超时。

保持活动请求的最大数量(在 Apache 中为 MaxKeepAliveRequests;在 NGINX 中为 keepalive_requests
在启用保持活动之后,此选项设置单个 TCP 连接处理的请求数。要实现资源的最佳使用,请将保持活动请求的最大数量设置为 100 或更高。

AcceptFilter(在 Apache 中为 AcceptFilter;在 NGINX 中为 accept_filter
AcceptFilter 默认情况下处于启用状态,指示 Apache 对连接使用 TCP_DEFER_ACCEPT 选项。此设置可导致 TCP 套接字处于“半开放”状态,使负载均衡器认为已建立连接,但后端实例实际上并没有建立连接。半开放连接在低容量负载均衡器中更为常见,在这些负载均衡器中,连接在使用之前已经“陈旧”。

Logging
启用 %{X-Forwarded-For}i 选项,使 Apache 在其日志中显示每个请求的 ELB x-forwarded-for 标头。此标头包含原始客户端的 IP 地址。%D 选项将完成每个请求所花的时间添加到访问日志中:

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined

此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 7 月 19 日

更新时间:2018 年 7 月 31 日