Мы используем сельдерей, чтобы сделать сторонние HTTP-звонки. У нас есть около 100 задач, которые просто вызывают вызовы API-интерфейса сторонних разработчиков. Некоторые задачи вызывают API навалом, например, полмиллиона запросов в 4 часа утра, в то время как некоторые из них представляют собой непрерывный поток вызовов API, получающих запросы почти один или два раза в секунду.Оптимизация сельдерея для сторонних HTTP-звонков
Большая часть времени ответа на вызов API составляет от 500 до 800 мс.
Мы видим очень медленные скорости доставки с сельдереем. Для большинства из вышеперечисленных задач максимальная скорость доставки составляет около 100/с (макс.) До почти 1/с (мин). Я считаю, что это очень плохо, и что-то определенно неправильно, но я не могу понять, что это такое.
Мы начали с кластера из 3 серверов и поэтапно сделали его кластером из 7 серверов, но без каких-либо улучшений. Мы попытались с различными настройками параллелизма от автомасштаба до фиксированных 10, 20, 50, 100 работников. Нет никакого результата, и наш брокер - RabbitMQ.
Поскольку наше время выполнения задачи очень мало, менее чем за секунду для большинства, мы также попытались сделать счетчик префикса неограниченным для разных значений.
--time-limit=1800 --maxtasksperchild=1000 -Ofair -c 64 --config=celeryconfig_production
Серверы 64 G ОЗУ, CentOS 6.6.
Можете ли вы дать мне представление о том, что может быть неправильным, или указатели на то, как его решить?
Должны ли мы идти с gevents? Хотя я понятия не имею, что это такое.
Насколько заполнены ваши очереди в RabbitMQ? RabbitMQ быстрее, когда очереди пустые. Вы можете контролировать загрузку процессора RabbitMQ. Если вы видите интенсивное использование ЦП, возможно, это потому, что RabbitMQ делает много, чтобы справиться с огромным размером очереди. – LearnerEarner
Может показаться глупым и уверенным, что вы обратили внимание на это, но проверили ли вы, если сторонний сервер ведет себя хорошо под нагрузкой? Он все еще реагирует на 500-800 мс, даже когда вы нажимаете на него со многими параллельными запросами? – LearnerEarner
http://www.rabbitmq.com/blog/2012/05/11/some-queuing-theory-throughput-latency-and-bandwidth/ – LearnerEarner