Rabbitmq - uzasadnione oczekiwania dotyczące wydajności / skali

13

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.

użytkownik21640
źródło
Jest to niezwykle prosty do przetestowania, zwłaszcza biorąc pod uwagę, że przy oczekiwanych liczbach masz budżet na przygotowanie niektórych maszyn wirtualnych. Zdecydowanie sugeruję przetestowanie go w oparciu o dokładny przypadek użycia na sprzęcie, którego oczekujesz.
Andrew M.
Rzuć okiem na plany CloudAMQP - są to przetestowane numery wydajności dla niektórych konfiguracji sprzętowych.
Przywróć Monikę - M. Schröder

Odpowiedzi:

11

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.

Michael Dillon
źródło
6

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):

voretaq7
źródło
1
Jestem świadomy wielu zmiennych. Dlatego w cytatach wspomniałem o „przeciętnym” sprzęcie, ponieważ rozumiem, jak niewyraźny jest to pomysł. Niemniej jednak myślałem, że niektóre liczby pochodzące z doświadczeń ludzi będą przydatne. Dzięki za referencje.
user21640,
1
@ user21640 Nie tylko sprzęt dodaje fuzz do twojego pytania - Trading High-Frequency może mieć inne pojęcie „dużej pojemności” niż ty lub ja, a także znacznie inne definicje akceptowalnej wydajności. Ostatecznie jedyną osobą, której doświadczenie się liczy, to ty, w środowisku, w moim doświadczeniu jeden dobrze zaplanowane lokalnym punktem odniesienia jest wart tysiące raportów zewnętrznych, jeśli chodzi o zaufanie do planowania pojemności - nigdy nie wiadomo, kiedy obciążenie jest patologiczny przypadek: -)
voretaq7