Byłbym wdzięczny, gdyby ktokolwiek mógł skierować mnie w stronę pewnych rozsądnych skali / ograniczeń dotyczących królika (na „przeciętnym” sprzęcie, fwiw) lub opublikować swoje wrażenia z jego wydajności. Staram się wyczuć pojemność wielu kolejek, liczbę subskrybentów w kolejkach, wpływ na wydajność setek lub tysięcy słuchaczy w kolejkach fanout, dowolne twarde liczby, które każdy może mieć królika w środowisku o dużej pojemności.
performance
rabbitmq
użytkownik21640
źródło
źródło
Odpowiedzi:
Przede wszystkim musisz zrozumieć, które elementy na liście mają limity skalowania, które możesz trafić, a które nie. Niektóre z nich zależą od implementacji, więc pomaga czytać na temat elementów wewnętrznych, na przykład książka RabbitMQ w akcji.
Liczba kolejek jest ograniczona przez pamięć RAM. Z drugiej strony liczba wiadomości w grze nie jest ograniczona przez pamięć RAM, ponieważ RabbitMQ automatycznie wysyła je na dysk. Kiedyś przypadkowo dostałem prawie 8 milionów wiadomości w grze na serwerze programistycznym, kiedy nie zwracałem uwagi.
Nie ma również ograniczeń co do wielkości wiadomości, ale naprawdę powinieneś pomyśleć dwa razy, jeśli rozmiar pojedynczej wiadomości przekracza 512 KB. W końcu użyłem pamięci podręcznej do przesyłania dużych obiektów między aplikacjami i wysyłałem tylko mniejsze komunikaty kontrolne, które zawierały klucz memcache. Ale jeśli naprawdę chcesz, możesz wysyłać jako wiadomości ogromne pliki JPEG i obiekty binarne, takie jak pliki JAR.
Liczba subskrybentów jest ograniczeniem systemu operacyjnego, ponieważ subskrybent potrzebuje co najmniej jednego otwartego gniazda TCP. Oczywiście można to regulować w większości systemów operacyjnych, więc twój przebieg będzie się różnił i dlatego musisz przetestować swój model. Korzystam z JMETERA, aby załadować test naszych aplikacji internetowych i właśnie odkryłem tę wtyczkę AMQP https://github.com/jlavallee/JMeter-Rabbit-AMQP, ale jeszcze jej nie używałem. W każdym razie jest to rodzaj testu, który szybko powie ci, co twój sprzęt (lub konfiguracja VM) racjonalnie poradzi.
Jedyną trudną rzeczą jest testowanie dużej liczby klientów w kolejkach fanout. Zamiast tego możesz również porównać za pomocą wymiany tematów, z konsumentami subskrybującymi przy użyciu klucza powiązania z symbolem wieloznacznym (*), który osiąga ten sam efekt końcowy. Spróbuj uruchomić ten test na jak największej liczbie różnych komputerów, aby upewnić się, że nie napotykasz wąskiego gardła spowodowanego przez jeden serwer z uruchomionymi procesami konsumenckimi. PS, jak wygląda wtyczka Jmeter, może być również przydatna do symulacji konsumentów.
źródło
To nie jest tak naprawdę pytanie, na które można odpowiedzieć - istnieje zbyt wiele czynników (ruchoma definicja „przeciętnego” sprzętu, rozmiar wiadomości w kolejce, liczba konsumentów i częstotliwość odpytywania / jak szybko wypełniają pracę w wiadomościach itp. .). Naprawdę musisz przetestować swoje środowisko.
To powiedziawszy, sprawdź niektóre z tych dyskusji na temat wydajności RabbitMQ (w tym kilka pomysłów, w jaki sposób możesz przetestować instalację, aby zobaczyć, czego możesz oczekiwać od Rabbit):
źródło