누군가가 rabbitmq ( "평균"하드웨어, fwiw)에 대한 합리적인 규모의 수치 / 제한을 지시하거나 성능에 대한 경험을 게시 할 수 있다면 감사 할 것입니다. 대기열 수, 대기열의 가입자 수, 팬 아웃 대기열에 수백 또는 수천 명의 청취자를 갖는 성능에 영향을 미치려고합니다. 고용량 환경에서 토끼를 실행했을 수있는 어려운 숫자입니다.
누군가가 rabbitmq ( "평균"하드웨어, fwiw)에 대한 합리적인 규모의 수치 / 제한을 지시하거나 성능에 대한 경험을 게시 할 수 있다면 감사 할 것입니다. 대기열 수, 대기열의 가입자 수, 팬 아웃 대기열에 수백 또는 수천 명의 청취자를 갖는 성능에 영향을 미치려고합니다. 고용량 환경에서 토끼를 실행했을 수있는 어려운 숫자입니다.
답변:
우선, 목록의 어떤 항목에 도달 할 수있는 배율 제한이 있는지, 그렇지 않은 항목이 있는지 이해해야합니다. 이 중 일부는 구현에 따라 다르므로 RabbitMQ in Action과 같은 내부를 읽는 데 도움이됩니다.
대기열 수는 RAM에 따라 제한됩니다. 반면에, 실행중인 메시지 수는 RabbitMQ가 자동으로 디스크에 페이징 아웃하기 때문에 RAM에 의해 제한되지 않습니다. 주의를 기울이지 않았을 때 개발 서버에서 실수로 거의 800 만 개의 메시지가 재생 된 적이 있습니다.
메시지 크기에는 제한이 없지만 단일 메시지의 크기가 512K를 초과하면 실제로 두 번 생각해야합니다. 메모리 캐시를 사용하여 응용 프로그램간에 큰 객체를 전달하고 memcache 키가 포함 된 작은 제어 메시지 만 보냈습니다. 그러나 정말로 원한다면 JAR 파일과 같은 거대한 JPEG 및 바이너리 객체를 메시지로 보낼 수 있습니다.
가입자 수는 하나 이상의 TCP 소켓이 열려 있어야하므로 가입자 수는 OS 제한입니다. 물론 대부분의 OS에서 조정할 수 있으므로 마일리지가 다양하므로 모델을 테스트해야합니다. JMETER를 사용하여 웹 응용 프로그램을로드 테스트하고 AMQP 플러그인 https://github.com/jlavallee/JMeter-Rabbit-AMQP를 발견 했지만 아직 사용하지 않았습니다. 어쨌든 이것은 하드웨어 (또는 VM 구성)가 합리적으로 처리 할 대상을 신속하게 알려주는 테스트입니다.
유일하게 어려운 것은 팬 아웃 대기열에서 많은 수의 소비자를 테스트하는 것입니다. 동일한 결과를 달성하는 와일드 카드 (*) 바인딩 키를 사용하여 구독하는 소비자와 함께 주제 교환을 사용하여 비교할 수도 있습니다. 소비자 프로세스를 실행하는 단일 서버로 인해 병목 현상이 발생하지 않도록 가능한 한 많은 컴퓨터에서이 테스트를 실행하십시오. Jmeter 플러그인이 보이는 PS는 소비자를 시뮬레이트하는 데 유용 할 수도 있습니다.
이것은 실제로 대답 할 수있는 질문이 아닙니다. 너무 많은 요인 ( "평균"하드웨어의 이동 정의, 대기열의 메시지 크기, 소비자 수 및 폴링 빈도 / 메시지 작업 속도 등)이 너무 많습니다. ). 실제로 환경을 벤치마킹해야합니다.
즉, RabbitMQ 성능에 대한 다음 토론 중 일부를 확인하십시오 (토끼에서 예상 할 수있는 것을 확인하기 위해 설치를 벤치마킹하는 방법에 대한 아이디어 포함).