使用 Apache 或 NGINX 作为 ELB 的后端服务器的最佳设置是什么?

上次更新时间:2021 年 3 月 17 日

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

解决方法

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

如果后端应用程序正在运行 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 套接字处于“半开放”状态,使负载均衡器假定已建立连接,但后端实例实际上并没有建立连接。半开放连接在低容量负载均衡器中更为常见,在这些负载均衡器中,连接在使用之前已经“陈旧”。

日志记录:
启用 %{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

注意:更新配置之后,请重新启动 Apache 或 NGINX。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?