RabbitMQ 흐름 제어 - 메모리 제어
3638 단어 RabbitMQ
기본 메모리 임계값은 설치된 RAM의 40% 로 설정됩니다.이것은 RabbitMQ 서버가 40퍼센트가 넘는 자원을 사용하는 것을 막지 않습니다. 이것은 발표자(생산자)에 대한 제한일 뿐입니다.최악의 경우, Erlang의 스팸 수집기는 사용하는 메모리 수를 배로 증가시킬 수 있습니다(기본적으로 80%의 RAM).OS 스왑 또는 페이지 파일을 활성화하는 것이 좋습니다.
32비트 시스템 단일 프로세스의 메모리 제한은 2GB로 설정됩니다.64비트 시스템의 일반적인 구현(예: AMD64 및 Intel EM64T)은 프로세스당 256TB만 허용합니다.64비트 Windows는 8TB로 제한됩니다.그러나 64비트 운영 체제에서도 32비트 프로세스는 보통 2GB의 최대 주소 공간만 사용합니다.즉, 메모리가 아무리 크더라도 기본 임계값은 2GB*0.4=0.8GB(820M 정도)입니다.
Configuring the Memory Threshold
프로파일을 편집하여 트리거 흐름 제어의 메모리 임계값을 조정할 수 있습니다.다음 예제에서는 임계값을 기본값 0.4로 설정합니다.
vm_memory_high_watermark.relative = 0.4
[{rabbit, [{vm_memory_high_watermark, 0.4}]}]
기본값 0.4은 설치된 RAM의 40% 또는 사용 가능한 가상 주소 공간의 40% 를 나타냅니다.예를 들어, 32비트 플랫폼에서 4GB RAM을 설치한 경우 4GB의 40%는 1.6GB이지만 32비트 Windows는 일반적으로 프로세스를 2GB로 제한하기 때문에 실제 임계값은 2GB의 40%(820MB)입니다.
또는 노드에 사용되는 RAM의 절대 제한을 설정하여 메모리 임계값을 조정할 수 있습니다.다음 예제에서는 임계값을 1073741824바이트(1024MB)로 설정합니다.
vm_memory_high_watermark.absolute = 1073741824
[{rabbit, [{vm_memory_high_watermark, {absolute, 1073741824}}]}]
메모리 단위 사용:
vm_memory_high_watermark.absolute = 1024MB
([{rabbit, [{vm_memory_high_watermark, {absolute, "1024MiB"}}]}])
vm_memory_high_watermark.absolute = 1GB
절대 제한이 설치된 RAM 또는 사용 가능한 가상 주소 공간보다 크면 임계값을 작은 제한으로 설정합니다.
RabbitMQ 서버가 시작되면 RABBITMQ_에 메모리 제한 정보가 인쇄됩니다.NODENAME.로그 파일:
=INFO REPORT==== 29-Oct-2009::15:43:27 ===
Memory limit set to 2048MB.
rabbitmqctlstatus 명령을 사용하여 메모리 제한을 조회할 수 있습니다.
에이전트가 rabbitmqctl set_를 사용할 때vm_memory_high_watermark fraction 명령 또는 rabbitmqctl set_vm_memory_high_watermark absolute memory_limit 명령이 실행될 때 한도값을 변경할 수 있습니다.이 명령에서도 메모리 단위를 사용할 수 있습니다.이 명령은 프록시 (broker) 가 닫힐 때까지 계속 적용됩니다.프록시가 다시 시작된 후에 해당하는 설정 설정을 변경해야 합니다.임계값을 변경하지 않고 이 명령을 실행하면 시스템 RAM의 총 수를 조회했기 때문에 핫플러그 RAM이 있는 시스템의 경우 메모리 제한이 변경될 수 있습니다.
Disabling All Publishing
값이 0이면 메모리 경고가 즉시 종료되어 모든 게시 연결이 막힙니다. (전역 게시를 사용하지 않으려면 유용할 수 있습니다.)rabbitmqctl set_ 사용하기vm_memory_high_watermark 0.
Limited Address Space
64비트 OS(또는 PAE가 있는 32비트 OS)의 32비트 Erlang VM에서 RabbitMQ를 실행할 때 주소 지정 메모리가 제한됩니다.서버에서 이를 감지하고 다음 메시지를 기록합니다.
=WARNING REPORT==== 19-Dec-2013::11:27:13 ===
Only 2048MB of 12037MB memory usable due to limited address space.
Crashes due to memory exhaustion are possible - see
http://www.rabbitmq.com/memory.html#address-space
따라서 64비트 OS에서 실행할 때 64비트 Erlang VM을 사용하는 것이 좋습니다.
Configuring the Paging Threshold
프록시 (broker) 가 메모리 한도값에 도달하고 게시자를 차단하기 전에, 지시 대기열을 통해 메모리를 디스크로 보내는 것을 시도합니다.지속 메시지와 임시 메시지가 모두 바뀝니다. (지속 메시지는 디스크에 있지만 메모리에서 삭제됩니다.)
기본적으로 에이전트가 메모리 임계값의 50% 위치에 도달하면 발생합니다(기본 메모리 임계값이 0.4인 경우 20% 메모리 사용).이 값을 변경하려면 vm_memory_high_watermark_paging_ratio 설정의 기본값은 0.5로 수정되었습니다.예:
vm_memory_high_watermark_paging_ratio = 0.75
vm_memory_high_watermark.relative = 0.4
[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},
{vm_memory_high_watermark, 0.4}]}]
위의 설정은 메모리의 30%를 사용할 때 페이지를 시작하고 40%를 사용할 때 게시자를 막습니다.
vm_를memory_high_watermark_paging_ratio는 1.0보다 큰 값으로 설정됩니다.이 경우 대기열은 내용 페이지를 디스크에 보내지 않습니다.만약 이것이 메모리 경보를 닫게 된다면, 위에서 말한 바와 같이producer를 막을 것입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Golang "일등 시민"- 함수 (function)2. 성명 함수: 일반 함수는 반드시 먼저 성명해야 호출할 수 있다 다섯째, 함수 변수 - 함수를 값으로 변수에 저장 익명 함수 성명, 호출 익명 함수 리셋 함수 실현 익명 함수 구현 조작 봉인 함수 자체가 값으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.