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

최종 업데이트 날짜: 2022년 5월 17일

Classic Load Balancer에 등록된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행되는 웹 애플리케이션에 연결할 때 클라이언트에서 지연 시간이 매우 길어지는 문제가 발생합니다. Elastic Load Balancing 지연 시간 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

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에 대해 CloudWatch 지연 시간 지표평균 통계를 확인합니다. 이 값이 크면 백엔드 인스턴스 또는 애플리케이션 종속 서버에 문제가 있는 것입니다.

5.    지연 시간 지표의 최댓값 통계를 확인합니다. 이 값이 유휴 시간 초과 값과 같거나 큰 경우 요청이 시간 초과되어 HTTP 504 오류가 발생합니다.

6.    지연 시간 지표의 패턴을 점검합니다. 지표가 일정한 간격의 스파이크에 도달한다면 예약된 작업의 오버헤드로 인한 백엔드 인스턴스의 성능 문제입니다.

7.    탄력적인 로드 밸런싱에 대한 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 버킷), 그리고 네트워크 주소 변환(NAT) 인스턴스, 원격 웹 서비스, 프록시 서버 등의 외부 리소스 연결을 포함하되 이에 국한되지 않습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?