ELB Classic Load Balancer의 지연 시간이 긴 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Elastic Load Balancing(ELB) Classic Load Balancer에 연결할 때 지연 시간이 길어집니다.

간략한 설명

Classic Load Balancer에서 지연 시간이 길어지는 이유는 다음과 같습니다.

  • 네트워크 연결 문제
  • Classic Load Balancer의 잘못된 구성
  • 백엔드 인스턴스의 높은 메모리(RAM) 사용률
  • 백엔드 인스턴스의 높은 CPU 사용률
  • 백엔드 인스턴스의 부적절한 웹 서버 구성
  • 외부 데이터베이스 또는 Amazon Simple Storage Service(Amazon S3) 버킷과 같은 백엔드 인스턴스에서 실행되는 웹 애플리케이션 종속성 관련 문제

해결 방법

1.    Classic Load Balancer의 네트워크 연결 문제를 해결합니다.

2.    사용 사례에 맞게 Classic Load Balancer를 구성합니다.

3.    Classic Load Balancer의 액세스 로그를 확인하여 지연 시간이 긴 백엔드 인스턴스를 확인합니다. backend_processing_time을 검토하여 지연 문제가 있는 백엔드 인스턴스를 찾습니다.
백엔드 인스턴스의 웹 애플리케이션 서버가 높은 지연 시간을 경험하는지 확인하려면 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.    Classic Load Balancer에 대한 Amazon CloudWatch 지연 시간 지표평균 통계를 확인하세요. 값이 높으면 백엔드 인스턴스 또는 애플리케이션 종속성 서버에 문제가 있는 것입니다.

5.    지연 시간 지표의 최대 통계를 확인합니다. 값이 유휴 제한 시간 값을 충족하거나 초과할 경우 요청 제한 시간이 초과되어 HTTP 504 오류가 발생합니다.

6.    지연 시간 지표에서 패턴을 확인합니다. 일정한 간격의 지표 스파이크는 스케줄링된 작업으로 인한 오버헤드로 인해 백엔드 인스턴스의 성능 문제를 나타냅니다.

7.    ELB의 CloudWatch SurgeQueueLength 지표를 확인하세요. Classic Load Balancer에 대한 요청이 최대값(1024) 을 초과하면 요청이 거부되고 로드 밸런서가 HTTP 503 오류를 생성합니다. SpilloverCount 지표의 합계 통계는 거부된 요청의 총 수를 측정합니다. 자세한 내용은 ELB의 Classic Load Balancer 용량 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

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.백엔드 인스턴스의 웹 서버에 대한 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 버킷)
  • Network Address Translation(NAT)와 같은 외부 리소스 연결
  • 원격 웹 서비스
  • 프록시 서버

관련 정보

Classic Load Balancer 모니터링

AWS 공식
AWS 공식업데이트됨 일 년 전