Używamy selera do generowania połączeń http od strony trzeciej. Mamy około 100 zadań, które po prostu wywołują zewnętrzne wywołania API HTTP. Niektóre zadania wywołują masowo interfejs API, na przykład pół miliona żądań o godzinie 4 rano rano, podczas gdy inne są ciągłym strumieniem wywołań API otrzymujących żądania prawie raz lub dwa razy na sekundę.Optymalizacja selera do zewnętrznych połączeń HTTP
Większość czasu reakcji interfejsu API wynosi od 500 do 800 ms.
Obserwujemy bardzo powolne tempo dostawy selera. W przypadku większości z powyższych zadań maksymalna szybkość dostarczania wynosi około 100/s (maks.) Do prawie 1/s (min). Uważam, że jest to bardzo słabe i coś jest zdecydowanie złe, ale nie jestem w stanie dowiedzieć się, co to jest.
Zaczynaliśmy od skupienia 3 serwerów i stopniowo tworzyliśmy klaster 7 serwerów, ale bez poprawy. Próbowaliśmy różnych ustawień współbieżności od autoskalowania do ustalonych 10, 20, 50, 100 pracowników. Nie ma backend wyniku, a naszym brokerem jest RabbitMQ.
Ponieważ nasz czas wykonywania zadań jest bardzo mały, mniej niż sekunda dla większości, staraliśmy się również, aby licznik prefetch był nieograniczony do różnych wartości.
--time-limit=1800 --maxtasksperchild=1000 -Ofair -c 64 --config=celeryconfig_production
Serwery 64 g RAM Centosu 6.6.
Czy możesz mi powiedzieć, co może być nie tak, lub wskazówki, jak go rozwiązać?
Czy powinniśmy iść z geodetami? Chociaż nie mam pojęcia, co to jest.
Jak wypełniasz swoje kolejki w RabbitMQ? RabbitMQ jest najszybszy, gdy kolejki są puste. Możesz monitorować wykorzystanie procesora komputera RabbitMQ. Jeśli widzisz duże obciążenie procesora, prawdopodobnie dzieje się tak dlatego, że RabbitMQ dużo robi, aby poradzić sobie z ogromnym rozmiarem kolejki. – LearnerEarner
Może brzmieć głupio i na pewno zwróciłeś na to uwagę, ale czy sprawdziłeś, czy serwer strony trzeciej zachowuje się dobrze pod obciążeniem? Czy nadal odpowiada na 500-800 ms, nawet jeśli trafisz na niego z wieloma równoległymi żądaniami? – LearnerEarner
http://www.rabbitmq.com/blog/2012/05/11/some-queuing-theory-throughput-latency-and-bandwidth/ – LearnerEarner