ActiveMQ용 Amazon MQ에서 "영구 스토어가 가득 참" 오류를 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 4월 19일

ActiveMQ 브로커용 Amazon MQ로 메시지를 보낼 수 없습니다. Amazon CloudWatch에서 브로커의 로그를 검토할 때 "영구 스토어가 가득 참" 오류가 표시됩니다. 오류의 원인은 무엇이며 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

ActiveMQ용 Amazon MQ는 브로커가 스토리지 한도에 도달하면 영구 스토어가 가득 참(Persistent store is Full) 오류를 CloudWatch에 반환합니다. ActiveMQ 브로커용 Amazon MQ가 스토리지 한도에 도달하면 브로커는 메시지를 수신할 수 없습니다.

영구 스토어가 가득 참(Persistent store is Full) 오류를 해결하려면 먼저 브로커에 대한 다음 CloudWatch 지표를 검토하여 오류의 원인을 확인합니다.

  • 스토어 백분율 사용량
  • 전체 복구를 위한 저널 파일
  • 빠른 복구를 위한 저널 파일

그런 다음 브로커의 지표를 기준으로 필요에 따라 브로커의 영구 스토리지에 저장되는 데이터의 양을 줄입니다.

오류가 다시 발생하지 않도록 하려면 이 문서의 "영구 스토어가 가득 참" 오류 방지를 위한 모범 사례 섹션을 참조하세요. 자세한 내용은 Apache ActiveMQ 설명서에서 AMQ 메시지 스토어생산자 흐름 제어를 참조하세요.

ActiveMQ 브로커용 Amazon MQ에 대한 CloudWatch "영구 스토어가 가득 참" 오류 메시지의 예

INFO | Usage(default:store:queue://broker.name:store) percentUsage=99%, usage=537210471, limit=536870912, percentUsageMinDelta=1%;Parent:Usage(default:store) percentUsage=100%, usage=537210471, limit=536870912,percentUsageMinDelta=1%: Persistent store is Full, 100% of 536870912. Stopping producer (ID:xxxx) to prevent flooding queue://broker.name. See http://activemq.apache.org/producer-flow-control.html for more info (blocking for: 155s)

해결 방법

오류 원인 확인

1.    CloudWatch 콘솔(CloudWatch console)을 엽니다.

중요: 브로커가 있는 동일한 AWS 리전에 로그인해야 합니다.

2.    왼쪽 탐색 창에서 지표(Metrics)를 선택합니다. 그런 다음 모든 지표(All metrics)를 선택합니다. CloudWatch 지표(Metrics) 페이지가 열립니다.

3.    지표(Metrics) 페이지에서 Amazon MQ를 선택합니다. 그런 다음 브로커 지표(Broker Metrics)를 선택합니다.

4.    검색 상자에 브로커 이름을 입력합니다. 그런 다음 키보드에서 Enter 키를 누릅니다. 검색 상자에 입력한 브로커에 대한 모든 CloudWatch 지표가 나타납니다.

5.    스토어 백분율 사용량(Store Percentage Usage) 지표 값을 검토합니다. 브로커의 스토어 백분율 사용량(Store Percentage Usage) 지표가 100에 도달하면 브로커는 메시지 수신을 중지하고 영구 스토어가 가득 참(Persistent store is Full) 오류를 반환합니다.

6.    브로커의 스토어 백분율 사용량(Store Percentage Usage) 지표가 100(또는 100에 가까움)인 경우 다음 지표의 값을 검토하여 원인을 파악합니다.

  • 전체 복구를 위한 저널 파일—완전한 종료 후 재생되는 저널 파일 수를 나타냅니다. 이 지표가 증가하면 브로커의 소비자가 느리게 실행되거나 영구 스토리지에 보류 중인 메시지가 너무 많다는 것을 나타냅니다.
  • 빠른 복구를 위한 저널 파일—비정상 종료 후 재생되는 저널 파일 수를 나타냅니다. 이 지표가 증가하면 영구 스토리지에 보류 중인 메시지가 너무 많다는 것을 나타냅니다.

참고: ActiveMQ KahaDB 저널 로그 파일(데이터 파일)은 다음과 같은 이유로 영구 스토리지에 남아있을 수 있습니다.

  • 데이터 파일에 내구성이 뛰어난 주제 구독 또는 대상에 대한 보류 중인 메시지가 포함되어 있습니다.
  • 데이터 파일에 사용 중인 데이터 파일에 있는 메시지에 대한 개별 승인(ACK)이 포함되어 있습니다.
  • 데이터 파일이 보류 중인 트랜잭션을 참조합니다.
  • 데이터 파일이 저널 파일이며 보류 중인 쓰기 작업이 있습니다.

자세한 내용은 ActiveMQ 설명서에서 정리 후에도 KahaDB 로그 파일이 남아 있는 이유를 참조하세요.

ActiveMQ 브로커의 영구 스토리지를 위해 Amazon MQ에 저장되는 데이터의 양을 줄이는 방법

브로커의 대기열 및 내구성이 뛰어난 주제에 있는 보류 중인 메시지를 사용 또는 삭제

자세한 내용은 Apache ActiveMQ 설명서에서 대기열을 제거하려면 어떻게 해야 하나요?를 참조하세요.

참고: ActiveMQ용 Amazon MQ는 현재 Java 관리 확장(JMX)을 지원하지 않습니다. 브로커의 대기열 및 내구성이 뛰어난 주제를 제거하려면 ActiveMQ 웹 콘솔을 사용해야 합니다.

브로커의 배달 못한 편지 대기열(DLQ)에 있는 만료된 메시지 사용 또는 삭제

자세한 내용은 Apache ActiveMQ 설명서에서 메시지 재전송 및 DLQ 처리만료된 메시지 자동으로 삭제 섹션을 참조하세요.

참고: 브로커의 DLQ에서 메시지를 사용하려면 먼저 DLQ를 일반 대기열로 구성합니다. 그런 다음 DLQ를 직접 폴링하도록 소비자를 구성합니다.

"영구 스토어가 가득 참" 오류를 방지하기 위한 모범 사례

사용 사례에 맞는 올바른 브로커 인스턴스 유형을 선택했는지 확인

자세한 내용은 Amazon MQ 개발자 안내서에서 최적의 처리량을 위해 올바른 브로커 인스턴스 유형 선택을 참조하세요.

참고: 사용 사례에 따라 브로커에 소비자를 추가하면 브로커의 메시지 처리량에 도움이 될 수 있습니다.

사용 중인 소비자의 수와 속도 증가

영구 모드에서 ActiveMQ를 사용하는 경우 일반적으로 소비자가 너무 적거나 소비자가 느릴 때 스토리지에 대한 쓰기가 발생합니다. 사용 중인 소비자의 수와 속도를 높이면 브로커가 영구 스토리지에 쓰는 데이터의 양을 줄이는 데 도움이 될 수 있습니다.

브로커의 "스토어 백분율 사용량" 지표를 기반으로 CloudWatch 경보 설정

브로커의 스토어 백분율 사용량(Store Percentage Usage) 지표가 100(또는 100에 가까움)에 도달하면 브로커는 메시지 수신을 중지합니다. 이 지표가 특정 임계값에 도달할 때 CloudWatch에서 알림을 보내도록 CloudWatch에서 경보를 설정할 수 있습니다. 그런 다음 오류가 발생하기 전에 이 문서에서 설명하는 예방 조치를 취할 수 있습니다.

자세한 내용은 CloudWatch 사용 설명서에서 정적 임계값을 기반으로 CloudWatch 경보 생성을 참조하세요.


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


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