내 평균 사용률이 낮은데 Amazon EC2 인스턴스가 네트워크 제한을 초과하는 이유는 무엇입니까?

5분 분량
0

내 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 평균 사용률은 낮지만 인스턴스가 여전히 네트워크 제한을 초과하고 있습니다.

간략한 설명

ELASTIC Network Adapter(ENA)를 통해 향상된 네트워킹을 지원하는 인스턴스에서 네트워크 성능 지표를 실시간으로 쿼리할 수 있습니다. 이러한 지표는 마지막 디바이스 재설정 이후 각 네트워크 인터페이스에서 대기 중이거나 삭제된 패킷 수의 누적 값을 제공합니다.

다음은 ENA 지표 중 일부입니다.

  • bw_in_allowance_exceeded: 인바운드 집계 대역폭이 인스턴스의 최대값을 초과하여 대기 또는 삭제된 패킷 수.
  • bw_out_allowance_exceeded: 아웃바운드 집계 대역폭이 인스턴스의 최대값을 초과하여 대기 또는 삭제된 패킷 수.
  • pps_allowance_exceeded: 양방향 초당 패킷 수(PPS)가 인스턴스의 최대값을 초과하여 대기 중이거나 삭제된 패킷 수.
  • conntrack_allowance_exceeded: 인스턴스의 네트워크 트래픽이 추적할 수 있는 최대 연결 수를 초과하여 대기 또는 삭제된 패킷 수.

네트워크 성능 사양은 인스턴스 유형에 따라 달라집니다. 사양을 보려면 현재 세대 인스턴스를 참조하세요. 경우에 따라 Amazon CloudWatch에 표시되는 평균 대역폭이나 PPS가 낮은데도 대기 또는 삭제될 수 있습니다. 예를 들어 CloudWatch의 NetworkIn, NetworkOut, NetworkPacketsIn 또는 NetworkPacketsOut 지표에는 제한에 도달했음을 나타내지 않는 금액이 표시될 수 있습니다.

해결 방법

마이크로버스트는 이전 증상의 가장 흔한 원인입니다. 마이크로버스트는 짧은 기간 동안 수요가 급증한 후 활동이 적거나 전혀 없는 기간을 말합니다. 이러한 버스트는 일반적으로 몇 초, 밀리초 또는 마이크로초 동안만 지속됩니다. 마이크로버스트의 경우 이전 섹션에 나열된 CloudWatch 지표가 이를 반영하기에 충분히 세분화되지 않습니다.

평균 계산 방법

이전 섹션에 나열된 CloudWatch의 EC2 지표는 1분마다 샘플링됩니다. 이러한 지표는 해당 기간에 전송된 총 바이트 또는 패킷을 캡처합니다. 그런 다음 이러한 샘플을 집계하여 5분 내에 CloudWatch에 게시합니다. 해당 기간의 각 통계는 서로 다른 샘플 값을 반환합니다.

  • 합계는 모든 샘플 값을 합한 것입니다.
  • SampleCount는 집계된 샘플의 수입니다(이 경우 5).
  • 최소는 바이트/패킷 수가 가장 적은 샘플 값입니다.
  • 평균은 합계를 샘플 수로 나누어 계산한 평균 샘플 값입니다.
  • 최대는 바이트/패킷 수가 가장 많은 샘플 값입니다.

평균 처리량 또는 PPS는 다음 두 가지 방법으로 계산할 수 있습니다.

  • 합계기간(예: 300초)으로 나누어 간단한 5분 평균을 구합니다.
  • 최대60초로 나누어 활동이 가장 많은 분 단위 평균을 구합니다.

마이크로버스트가 CloudWatch 지표에 반영되는 방식

다음은 마이크로버스트의 예시이며, CloudWatch에 마이크로버스트가 반영되는 방식입니다.

  • 인스턴스의 네트워크 대역폭 성능은 10Gbps(1.25GB/s).
  • 주어진 샘플(60초)에서 20GB의 아웃바운드 데이터 전송은 사용 가능한 모든 대역폭을 사용하므로 bw_out_allowance_exceeded가 증가합니다. 전송은 약 20초 후에 완료되며 이후에는 더 이상 데이터가 전송되지 않습니다.
  • 인스턴스는 나머지 4개 샘플(240초) 동안 유휴 상태로 유지됩니다.

이 예에서는 5분 동안의 평균 처리량이 마이크로버스트 동안의 평균 처리량보다 훨씬 낮습니다.

SUM(NetworkOut) / PERIOD = ((20 GB * 1 sample) + (0 GB * 4 samples)) / 300 seconds = ~0.066 GB/s * 8 bits = ~0.533 Gbps

가장 높은 샘플을 기준으로 처리량을 계산하여도 평균에는 여전히 처리량이 반영되지 않습니다.

MAXIMUM(NetworkOut) / 60 = 20 GB / 60 seconds = ~0.333 GB/s * 8 bits = ~2.667 Gbps

마이크로버스트 모니터링

처리량과 PPS를 보다 세분화된 수준에서 측정하려면 운영 체제(OS) 도구를 사용하여 네트워크 통계를 모니터링하세요. 활동을 셰이핑하거나 활동이 많은 기간에는 네트워크 통계를 더 자주 모니터링합니다.

다음은 OS 도구의 예입니다.

Linux

  • sar
  • nload
  • iftop
  • iptraf-ng

Windows

  • 성능 모니터

CloudWatch 에이전트는 Linux와 Windows에서 모두 사용하여 이러한 OS 수준의 네트워크 지표를 CloudWatch에 사용자 지정 지표로 게시할 수 있습니다. 이러한 지표는 최소 1초 간격으로 게시할 수 있습니다. 고해상도 지표(기간이 60초 미만인 지표)의 경우 더 높은 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

ENA에서 제공하는 네트워크 성능 지표를 모니터링하는 것이 가장 좋습니다. 지표를 보려면 드라이버 버전이 2.2.10(Linux) 및 2.2.2(Windows) 이상이어야 합니다. 자세한 내용은 다음을 참조하세요.

CloudWatch 에이전트는 ENA 지표를 게시할 수도 있습니다. Linux용 ENA 지표를 게시하는 방법에 대한 지침은 네트워크 성능 지표 수집을 참조하세요. Windows의 경우 성능 모니터에서 ENA 지표를 사용할 수 있습니다. 성능 모니터에 사용 가능한 지표를 게시하도록 CloudWatch 에이전트를 구성할 수 있습니다.

마이크로버스트 방지

마이크로버스트를 방지하려면 트래픽이 최대 처리량이나 패킷 속도를 초과하지 않도록 발신자에게 맞춰야 합니다. 이로 인해 마이크로버스트를 피하기가 어렵습니다. 발신자의 트래픽 속도를 조정하려면 일반적으로 애플리케이션 수준의 변경이 필요합니다. 이 변경 사항이 구현되는 방식에 따라 발신자가 트래픽 조정에 대한 OS 지원을 사용할 수 있거나 켜야 할 수도 있습니다. 그러나 이것이 항상 가능하거나 실용적이지는 않을 수도 있습니다. 단기간에 패킷을 보내는 연결이 너무 많기 때문에 마이크로버스트가 발생할 수도 있습니다. 이런 경우에는 개별 발신자의 조정이 도움이 되지 않습니다.

ENA 지표를 모니터링하는 것이 가장 좋습니다. 제한에 자주 도달하거나 트래픽 셰이핑이 애플리케이션에 영향을 준다는 증거가 있는 경우 다음을 수행하세요.

  • 스케일 업: 더 큰 인스턴스 크기로 이동합니다. 일반적으로 인스턴스가 클수록 허용량이 더 높습니다. 네트워크 최적화 인스턴스(예: C5n과 같이 “n”이 포함된 인스턴스)는 네트워크에 최적화되지 않은 각 인스턴스보다 허용량이 높습니다.
  • 스케일 아웃: 트래픽을 여러 인스턴스로 분산하여 개별 인스턴스에서 발생하는 트래픽과 경합을 줄입니다.

Linux 기반 운영 체제의 경우 위의 옵션 외에도 고급 사용자를 위한 완화 옵션이 있습니다. 이러한 옵션은 단독으로 또는 조합하여 구현할 수 있습니다. 테스트 환경에서 완화 기능을 벤치마킹하여 워크로드에 부정적인 영향을 주지 않으면서 트래픽 셰이핑을 줄이거나 제거하는지 검증하는 것이 가장 좋습니다.

  • SO_MAX_PACING_RATE: 이 소켓 옵션은 애플리케이션이 setsockopt 시스템 호출에 전달하여 최대 조정 속도(초당 바이트 수)를 지정할 수 있습니다. 그런 다음 Linux 커널은 해당 소켓의 트래픽 속도를 조절하여 제한을 초과하지 않도록 합니다. 이 옵션에는 다음이 필요합니다.

  • 애플리케이션 코드 수준 변경.

  • 커널에서의 지원.

  • FQ(Fair Queue) 큐 규율 사용 또는 TCP 계층에서의 조절에 대한 커널 지원(TCP에만 적용 가능).

  • 대기열 규율(qdiscs): qdiscs는 패킷 스케줄링 및 선택적 쉐이핑을 처리합니다. fq와 같은 일부 qdisc는 개별 흐름으로 인한 트래픽 폭증을 완화하는 데 도움이 됩니다. 자세한 내용은 트래픽 제어(TC) 매뉴얼 페이지를 참조하세요.

  • 단순 전송(Tx) 큐: 일부 시나리오에서는 단순 전송 큐가 PPS 셰이핑을 줄이는 데 도움이 됩니다. 다음과 같은 두 가지 방법으로 달성할 수 있습니다.

  • 바이트 큐 제한(BQL): BQL은 Tx 큐의 진행 중인 바이트 수를 동적으로 제한합니다. BQL은 Linux 커널과 함께 제공되는 ENA 드라이버 버전(“K”로 끝나는 버전)에서 기본적으로 켜집니다. GitHub의 ENA 드라이버 버전(“g”로 끝나는 버전)의 경우 BQL은 v2.6.1g부터 사용할 수 있으며 기본적으로 꺼져 있습니다. enable_bql ENA 모듈 파라미터를 사용하여 BQL을 켤 수 있습니다.

  • **Tx 큐 길이 감소:**Tx 큐 길이를 기본값인 1,024패킷에서 더 적은 수(최소 256개)로 줄입니다. ethtool을 사용하여 이 길이를 변경할 수 있습니다.

관련 정보

Amazon EC2 인스턴스 네트워크 대역폭

AWS 공식
AWS 공식업데이트됨 10달 전
댓글 없음

관련 콘텐츠