如何对 ELB 经典负载均衡器上的高延迟进行故障排除?

2 分钟阅读
0

当我连接到弹性负载均衡(ELB)经典负载均衡器时遇到了高延迟。

简短描述

以下原因会导致经典负载均衡器上出现高延迟:

  • 网络连接问题
  • 经典负载均衡器的配置不正确
  • 后端实例的内存(RAM)利用率高
  • 后端实例上的 CPU 利用率高
  • 后端实例上的 Web 服务器配置不当
  • 在后端实例(例如外部数据库或 Amazon Simple Storage Service(Amazon S3)桶)上运行的 Web 应用程序依赖项存在问题

解决方法

1.    解决经典负载均衡器的网络连接问题

2.    为您的用例配置经典负载均衡器

3.    检查您的经典负载均衡器的访问日志,以确定哪些后端实例存在高延迟。查看 backend_processing_time 以查找存在延迟问题的后端实例。
要验证后端实例的 Web 应用程序服务器是否存在高延迟,请使用 curl 来测量第一个字节的响应:

[ec2-user@ip-192.0.2.0 ~]$ for X in `seq 6`; do curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" http://www.example.com/ -so /dev/null; done  
High Latency sample output:  
HTTPCode=200 TotalTime=2.452  
HTTPCode=200 TotalTime=1.035
Low latency sample output:  
HTTPCode=200 TotalTime=0.515  
HTTPCode=200 TotalTime=0.013

4.    检查您的经典负载均衡器的 Amazon CloudWatch 延迟指标平均统计数据。如果该值较高,则后端实例或应用程序依赖项服务器存在问题。

5.    检查延迟指标的最大统计数据。如果该值达到或超过空闲超时值,则请求超时并导致出现 HTTP 504 错误。

6.    检查延迟指标中的模式。以定期间隔出现的指标峰值表示由于计划任务的开销而导致后端实例出现性能问题。

7.    检查 ELB 的 CloudWatch SurgeQueueLength 指标。如果对经典负载均衡器的请求超过最大值(1024),则请求将被拒绝,并且负载均衡器生成 HTTP 503 错误。SpilloverCount 指标的总和统计数据可用于测量被拒绝的请求的总数。有关详细信息,请参阅如何解决 ELB 中的经典负载均衡器容量问题?

8.    查看在后端实例上处理的 Apache,以检查是否存在内存问题。

命令示例:

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

输出示例:

Every 1.0s: echo –n 'Apache Processes: ' && ps –C apache2 –no-
headers | wc -1 && free –m
Apache Processes: 27
          total     used     free     shared     buffers     cached
Mem:      8204      7445     758      0          385         4567
-/+ buffers/cache:  2402     5801
Swap:     16383     189      16194

9.    检查您的后端实例的 CloudWatch CPUUtilization 指标。查找高 CPU 利用率或 CPU 利用率峰值。对于高 CPU 利用率,将您的实例升级到更大的实例类型。

10.    检查后端实例上 Web 服务器的 MaxClient 设置。此设置定义了实例可以同时处理多少个请求。对于具有适当内存和 CPU 利用率且延迟较高的实例,请增加 MaxClient 值。

将 Apache(httpd)生成的进程数与 MaxClient 设置进行比较。如果 Apache 进程的数量经常达到 MaxClient 值,则增加该值。

命令示例:

[root@ip-192.0.2.0 conf]# ps aux | grep httpd | wc -l 15

输出示例:

<IfModule prefork.c>  
StartServers         10  
MinSpareServers      5  
MaxSpareServers      10  
ServerLimit          15  
MaxClients           15  
MaxRequestsPerChild  4000  
</IfModule>

11.    检查是否存在导致后端实例出现延迟问题的依赖项。

以下是一些可能导致出现延迟问题的依赖项:

  • 共享数据库、外部资源,例如 S3 桶
  • 外部资源连接,例如网络地址转换(NAT)实例
  • 远程 Web 服务
  • 代理服务器

相关信息

监控您的经典负载均衡器

AWS 官方
AWS 官方已更新 9 个月前