성능
IBM Cloud® Messages for RabbitMQ 배치는 사용량에 따라 수동으로 스케일링하거나 특정 리소스 조건에서 자동 스케일링하도록 구성할 수 있습니다. 배치 성능을 조정할 때 몇 가지 요소를 고려하십시오.
배치 모니터링
Messages for RabbitMQ 배치는 배치의 리소스 사용량에 대한 기본 모니터링을 위해 IBM Cloud® Monitoring 서비스와의 통합을 제공합니다. 배치에서 Auto-Scaling을 구성하는 데 도움이 되도록 디스크 사용량 및 IOPS와 같은 사용 가능한 많은 메트릭이 제공됩니다. 사용량 추세를 관찰하고 이에 대응하도록 Auto-Scaling을 구성하면 리소스 고갈로 인해 데이터베이스가 불안정해지기 전에 성능 문제를 완화하는 데 도움이 될 수 있습니다.
RabbitMQ 메모리 사용량
RabbitMQ 는 메모리 사용의 강력한 고장을 제공합니다.메모리 자원이 할당되어 배치에 사용되는 방법에 대한 정보를 제공할 수 있습니다. 특히, 연결, 큐 미러 및 누적된 메시지는 모두 메모리를 사용합니다. 유스 케이스에서 한 번에 많은 연결을 열도록 요청하는 경우, 메모리를 늘리는 것을 고려할 수 있습니다. 마찬가지로, 복제가 필요하지 않은 임시 메시지만 포함하는 큐가 있는 경우 미러링 정책을 조정하여 메모리 사용량을 줄일 수 있습니다. 메시지가 더 적거나 없는 미러링 정책을 변경하면 노드를 다시 시작할 때 메시지가 삭제될 수 있고 이러한 메시지는 영원히 삭제됩니다.
경우에 따라 RabbitMQ에 메모리 급증이 발생할 수 있습니다. 특히, Messages for RabbitMQ 배치, 업데이트 및 유지보수의 경우입니다. 여기에서는 노드를 다시 시작하거나 삭제하면 메모리 사용량이 증가하여 다시 시작되거나 신규인 노드가 재동기화됩니다. RabbitMQ가 사용 가능한 메모리를 지속적으로 너무 많이 사용하는 경우 이러한 급증 중 하나로 인해 배치의 메모리가 부족해지고 충돌이 발생할 수 있습니다. 노드 재동기화를 수용할 수 있도록 메모리를 스케일링하는 것이 좋습니다.
RabbitMQ 메모리 알람
기본적으로 RabbitMQ 서버가 사용 가능한 RAM의 40% 이상을 사용하면 메모리 알람이 발생하고 공개자로부터 수신되는 메시지를 차단합니다. 이용자가 메시지를 충분히 사용하거나 메시지를 디스크로 이동하면 메모리 알람이 지워집니다. 메모리 알람이 지워지면 정상 서비스가 재개되고 공개자가 차단 해제 됩니다. 이는 RabbitMQ 서버가 할당된 메모리의 40% 이상을 사용하는 것을 막지는 않으며 공개자가 제한되는 지점일 뿐입니다. 자세한 정보는 RabbitMQ 문서를 참조하십시오.
RabbitMQ 디스크 알람
기본적으로 RabbitMQ 서버가 디스크 여유 공간이 특정 임계값 아래로 떨어졌음을 발견하면 디스크 알람을 발생시킵니다. Messages for RabbitMQ의 임계값은 배치 디스크 크기의 80%입니다. 알람은 공개자로부터 수신되는 메시지를 차단하고 메모리의 메시지가 디스크에 쓰여지지 않도록 합니다. 알람은 클러스터 범용이므로 한 노드의 디스크 공간이 너무 작아지면 모든 노드에서 알람이 차단됩니다. 알람을 지우려면 디스크에 기록된 메시지를 사용하거나, 해당 공간을 재확보하거나 더 큰 디스크로 배치를 확장해야 합니다.
메모리 알람에 대한 자세한 정보는 RabbitMQ 문서에 있습니다.
디스크 IOPS
초당 입출력 조작 수(IOPS)는 사용 중인 스토리지 볼륨의 유형별로 제한됩니다. Messages for RabbitMQ 배치용 스토리지 볼륨은 GB 티어당 10IOPS의 Block Storage Endurance 볼륨에 프로비저닝됩니다. IOPS 한계는 RabbitMQ 메시지 처리량 및 스토리지 조작에 영향을 줄 수 있습니다. 이러한 한계에 도달하면 메시지가 소비된 후 공간을 재확보할 때 디스크가 부족하게 되어 디스크 알람으로 발생하고 활동이 느려질 때까지 공개자 조절이 발생할 수 있습니다. 디스크 공간을 늘려서 배치에 사용할 수 있는 IOPS 수를 늘릴 수 있습니다.
쿼럼 큐
고가용성은 쿼럼 큐로 관리할 수 있습니다. 쿼럼 큐를 사용하면 성능에 영향을 미치며 오퍼레이션의 상태를 유지보수하기 위해 사용하는 WAL에 대한 추가 메모리 및 디스크 공간이 필요합니다. 또한 디스크의 모든 데이터를 유지하므로 추가 디스크 I/O가 필요합니다. 쿼럼 큐를 구현하거나 이를 고려하는 경우 RabbitMQ 문서에서는 자원 사용 및 성능 모두에 대한 효과를 우호적으로 다루고 있습니다.
RabbitMQ 알람 모니터링
디스크 또는 메모리 알람이 트리거되면 RabbitMQ 가 연결을 공개하기 위해 connection.blocked
알림 을 생성합니다. 많은 드라이버는 알림을 발견하는 데 필요한 프로토콜을 지원하므로 RabbitMQ 알람에 응답하도록 애플리케이션을
디자인할 수 있습니다.
RabbitMQ HTTP API에서 알람을 모니터할 수도 있습니다. GET /api/nodes
엔드포인트를 사용하고 응답에서 mem_alarm
및 disk_free_alarm
을
찾으십시오.
메모리 알람과 관련된 추가 점검을 위해 GET /api/nodes/{node}/memory
엔드포인트를 사용하여 단일 노드의 메모리와 관련된 정보를 수집할 수 있습니다.
표준 상태 검사
RabbitMQ HTTP API는 배치에서 RabbitMQ 노드의 상태를 확인하기 위해 2개의 성능 상태 검사 엔드포인트를 제공합니다.
상태 검사는 시스템 리소스를 이용합니다. 더 작고 덜 사용하는 배치의 경우, 성능 상태 검사에서 응답을 제공하는 데 시간이 오래 걸리지 않아야 합니다. 대규모 배치나 로드 중인 배치는 결과를 리턴하는 데 시간이 걸릴 수 있습니다.