RabbitMQ용 Amazon MQ: 높은 메모리 사용량 경보 - Amazon MQ

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

RabbitMQ용 Amazon MQ: 높은 메모리 사용량 경보

RabbitMQ는 CloudWatch RabbitMQMemUsed 지표로 식별되는 브로커의 메모리 사용량이 로 식별되는 메모리 한도를 초과하는 경우 메모리 고용량 경보를 발생시킵니다. RabbitMQMemLimit RabbitMQMemLimitAmazon MQ에서 설정하며 각 호스트 인스턴스 유형에 사용할 수 있는 메모리를 고려하여 특별히 조정되었습니다.

높은 메모리 사용량 경보를 발생한 RabbitMQ용 Amazon MQ는 메시지를 게시하는 모든 클라이언트를 차단합니다. 메모리 사용량이 높기 때문에 브로커가 경보 진단 및 해결을 복잡하게 만드는 다른 문제가 발생할 수도 있습니다.

메모리 사용량이 높기 때문에 시작을 완료할 수 없는 단일 인스턴스 브로커는 재시작 루프에 들어갈 수 있으며, 이 시간 동안 브로커와의 상호 작용이 제한됩니다. 클러스터 배포의 대기열에서 서로 다른 노드의 복제본 간에 메시지 동기화가 일시 중지될 수 있습니다. 대기열 동기화가 일시 중지되면 대기열에서 메시지를 소비할 수 없으며, 메모리 경보를 해결하는 동안 별도로 해결해야 합니다.

Amazon MQ는 메모리 부족 경보가 발생하는 브로커를 다시 시작하지 않으며 브로커가 계속해서 경보를 발생시키는 한 RebootBrokerAPI작업에 대한 예외를 반환합니다.

이 섹션의 정보를 사용하면 브로커에 발생된 RabbitMQ 높은 메모리 사용량 경보를 진단하고 해결하는 데 도움이 됩니다.

참고

필요한 조치를 취한 후 RABBITMQ _ MEMORY _ ALARM 상태가 지워지는 데 최대 몇 시간이 걸릴 수 있습니다.

참고

mq.m5. 인스턴스 유형에서 mq.t3.micro 인스턴스 유형으로 브로커를 다운그레이드할 수는 없습니다. 브로커를 다운그레이드하려면 브로커를 삭제하고 새 브로커를 생성해야 합니다.

RabbitMQ 웹 콘솔을 사용하여 높은 메모리 사용량 경보 진단

RabbitMQ 웹 콘솔은 각 노드에 대한 자세한 메모리 사용 정보를 생성하고 표시할 수 있습니다. 다음을 수행하여 이 정보를 확인할 수 있습니다.

  1. 브로커의 RabbitMQ 웹 콘솔에 AWS Management Console 로그인하여 여십시오.

  2. RabbitMQ 콘솔에 있는 개요(Overview) 페이지의 노드(Nodes) 목록에서 노드 이름을 선택합니다.

  3. 노드 세부 정보 페이지에서 메모리 세부 정보(Memory details)를 선택하고 섹션을 확장하여 노드의 메모리 사용 정보를 볼 수 있습니다.

RabbitMQ가 웹 콘솔에서 제공하는 메모리 사용 정보는 어느 리소스가 메모리를 많이 소비하고 있고 높은 메모리 사용량 경보의 원인일지를 알아내는 데 도움이 될 수 있습니다. RabbitMQ 웹 콘솔을 통해 사용할 수 있는 메모리 사용량 세부 정보에 대한 자세한 내용은 RabbitMQ 서버 문서 웹 사이트의 메모리 사용에 관한 추론을 참조하세요.

Amazon MQ 지표를 사용한 높은 메모리 사용량 경보 진단

Amazon MQ는 기본적으로 브로커에 대한 지표를 활성화합니다. CloudWatch 콘솔에 액세스하거나 를 사용하여 브로커 지표를 볼 수 있습니다. CloudWatch API 다음 지표는 RabbitMQ 높은 메모리 사용량 경보를 진단할 때 유용합니다.

아마존 MQ 메트릭 CloudWatch 메모리 사용량이 많은 이유
MessageCount 메시지는 사용되거나 폐기될 때까지 메모리에 저장됩니다. 메시지 수가 많으면 리소스가 과도하게 사용됨을 나타내며 높은 메모리 사용량 경보가 발생할 수 있습니다.
QueueCount 대기열은 메모리에 저장되며 대기열 수가 많으면 높은 메모리 사용량 경보가 발생할 수 있습니다.
ConnectionCount 클라이언트 연결은 메모리를 사용하며 동시 연결이 너무 많으면 높은 메모리 사용량 경보가 발생할 수 있습니다.
ChannelCount 연결과 마찬가지로, 각 연결을 사용하여 설정된 채널도 노드 메모리에 저장되며 채널 수가 많으면 높은 메모리 사용량 경보가 발생할 수 있습니다.
ConsumerCount 브로커에 연결된 모든 소비자에 대해 설정된 수의 메시지가 소비자에게 전달되기 전에 스토리지에서 메모리로 로드됩니다. 소비자 연결 수가 많을 경우 메모리 사용량이 증가하여 높은 메모리 사용량 경보가 발생할 수 있습니다.
PublishRate 메시지 게시는 브로커 메모리를 사용합니다. 브로커에 메시지가 게시되는 비율이 너무 높고 브로커가 소비자에게 메시지를 전달하는 비율을 크게 능가하는 경우, 브로커가 높은 메모리 사용량 경보를 발생시킬 수 있습니다.

높은 메모리 사용량 경보 해결

브로커의 높은 메모리 사용량 경보 발생을 줄이고 문제를 해결하려면 식별된 원인에 따라 아래와 같은 조치를 취하는 것이 좋습니다.

메모리 사용량이 많은 이유 Amazon MQ 권장 사항
대기열에 있는 메시지 수가 너무 많습니다. 다음을 수행합니다.
  • 대기열에 게시된 메시지를 소비합니다.

  • 대기열에서 메시지를 삭제합니다.

  • 브로커에서 대기열을 삭제합니다.

브로커에 구성된 대기열 수가 너무 많습니다. 대기열 수를 줄입니다.
브로커에서 설정된 연결 수가 너무 많습니다. 연결 수를 줄입니다. 자세한 내용은 연결 및 채널 수 축소 단원을 참조하십시오.
브로커에서 설정된 채널 수가 너무 많습니다. 채널 수를 줄입니다. 자세한 내용은 연결 및 채널 수 축소 섹션을 참조하세요.
브로커에 연결된 소비자 수가 너무 많습니다. 브로커에 연결된 소비자 수를 줄입니다.
메시지 게시 비율이 너무 높습니다. 게시자가 브로커에 보내는 메시지 빈도를 줄입니다.
클라이언트 연결 시도 빈도가 너무 높습니다. 메시지를 게시 또는 소비하거나 브로커를 구성하기 위해 클라이언트가 브로커에 연결을 시도하는 빈도를 줄입니다.

연결 및 채널 수 축소

RabbitMQ 브로커용 Amazon MQ와의 연결은 클라이언트 애플리케이션에서 닫거나 RabbitMQ 웹 콘솔을 사용하여 수동으로 닫을 수 있습니다. RabbitMQ 웹 콘솔을 사용하여 연결을 닫으려면 다음을 수행하세요.

  1. 브로커의 RabbitMQ 웹 콘솔에 AWS Management Console 로그인하여 엽니다.

  2. RabbitMQ 콘솔에서 연결(Connections) 탭을 선택합니다.

  3. 연결 페이지의 모든 연결(All connections) 목록에서 닫을 연결의 이름을 선택합니다.

  4. 연결 세부 정보 페이지에서 이 연결 닫기(Close this connection)를 선택하여 섹션을 확장한 다음 강제 닫기(Force Close)를 선택합니다. 필요에 따라 직접 입력한 설명을 추가하여 이유(Reason)의 기본 텍스트를 변경할 수 있습니다. RabbitMQ용 Amazon MQ는 연결을 닫을 때 사용자가 지정한 이유(Reason)를 클라이언트에 반환합니다.

  5. 대화 상자에서 확인(OK)을 선택하여 연결을 확인하고 닫습니다.

연결을 닫으면 닫힌 연결과 연결된 모든 채널도 닫힙니다.

참고

클라이언트 애플리케이션이 닫힌 후 브로커에 대한 연결을 자동으로 다시 설정하도록 구성할 수 있습니다. 이 경우 브로커 웹 콘솔에서 연결을 닫는 것만으로는 연결 또는 채널 수를 줄이는 데 충분하지 않습니다.

공개 액세스 권한이 없는 브로커의 경우 적절한 메시지 프로토콜 포트 (예: 연결용 포트) 에서 인바운드 트래픽을 거부하여 연결을 일시적으로 차단할 수 있습니다. 5671 AMQP 브로커를 생성할 때 Amazon MQ에 제공한 보안 그룹의 포트를 차단할 수 있습니다. 보안 그룹 수정에 대한 자세한 내용은 Amazon VPC User Guide의 보안 그룹에 규칙 추가를 참조하십시오.

클러스터 배포에서 일시 중지된 대기열 동기화 해결

RabbitMQ의 높은 메모리 사용량 경보 문제를 해결하는 중에 하나 이상의 대기열 메시지를 사용할 수 없는 문제가 발생할 수도 있습니다. 해당 대기열은 노드 간에 메시지를 동기화하는 진행하는 중일 수 있으며, 이 시간 동안 각 대기열은 게시 및 사용을 할 수 없게 됩니다. 높은 메모리 사용량 경보 때문에 대기열 동기화가 일시 중지될 수 있으며, 메모리 경보의 원인이 될 수도 있습니다.

일시 중지된 대기열 동기화 중지 및 재시도에 대한 자세한 내용은 RabbitMQ 일시 중지된 대기열 동기화 문제 해결 섹션을 참조하세요.

단일 인스턴스 브로커에서 재시작 루프 문제 해결

높은 메모리 사용량 경보를 발생시킨 RabbitMQ용 Amazon MQ 단일 인스턴스 브로커를 메모리가 시작하기에 충분하지 않은 상태에서 재시작하면 브로커를 사용할 수 없게 될 위험이 있습니다. 이로 인해 RabbitMQ가 재시작 루프에 들어가서 문제가 해결 될 때까지 브로커와의 추가 상호 작용이 불가능하게 될 수 있습니다. 브로커가 재시작 루프에 있는 경우, 이 섹션에 앞서 설명한 Amazon MQ 권장 작업을 적용하여 높은 메모리 사용량 경보를 해결할 수 없습니다.

브로커를 복구하려면 더 많은 메모리를 가진 더 큰 인스턴스 유형으로 업그레이드하는 것이 좋습니다. 클러스터 배포에서와 달리, 단일 인스턴스 브로커는 다시 시작하는 동안 노드 간에 수행할 대기열 동기화가 없기 때문에 높은 메모리 사용량 경보가 발생한 상태에서 업그레이드할 수 있습니다.

높은 메모리 사용량 경보 방지

RabbitMQ의 높은 메모리 사용량 경보 발생을 줄이고 문제를 해결하려면 식별된 원인에 따라 아래와 같은 조치를 취하는 것이 좋습니다.

메모리 사용량이 많은 이유 Amazon MQ 권장 사항
대기열에 있는 메시지 수가 너무 많습니다. 다음을 따릅니다.
브로커에 구성된 대기열 수가 너무 많습니다. 대기열 수 제한을 설정 또는 축소합니다.
브로커에서 설정된 연결 수가 너무 많습니다. 연결 수 제한을 설정 또는 축소합니다.
브로커에서 설정된 채널 수가 너무 많습니다. 클라이언트 애플리케이션에서 연결당 최대 채널 수를 설정합니다.
브로커에 연결된 소비자 수가 너무 많습니다. 소규모 소비자에 미리 가져오기 제한을 설정합니다.
클라이언트 연결 시도 빈도가 너무 높습니다. 연결 시도 횟수와 빈도를 줄이려면 수명이 긴 연결을 사용합니다.

브로커의 메모리 경보가 해결되면 호스트 인스턴스 유형을 추가 리소스가 있는 인스턴스로 업그레이드할 수 있습니다. 브로커의 인스턴스 유형을 업데이트하는 방법에 대한 자세한 내용은 Amazon MQ REST API 참조를 참조하십시오 UpdateBrokerInput.

브로커 인스턴스 유형의 전체 목록은 RabbitMQ용 Amazon MQ 인스턴스 유형 섹션을 참조하세요.