LINUX.ORG.RU

Количество workers и concurrency для celery

 , , ,


1

3

В документации прямым текстом говорится, что нужно экспериментировать, чтобы понять какое значение concurrency устанавливать для воркера и сколько этих воркеров создавать, но не говорится как это делать, а для меня это проблема - я действительно не понимаю как подобрать то самое идеальное количество. Может кто сталкивался и может подсказать?

Исходные данные: сервер за, например, 5 долларов на https://www.digitalocean.com/pricing/, на нем крутится nginx и простенький сайт на flask (uwsgi), которому и предстоит работать с celery. Таски для celery отрабатывают не больше, чем за 5-7 секунд.


не понимаю как подобрать

Оч просто.
Для начала сделай 1×1 и посмотри как пойдёт.
Потом, если мало будет (ибо если достаточно, то лучше побольше ресурсов оставить на более важные дела), увеличь на пару [дней|недель] до 2×1 и сравни. А потом сравни с 1×2. И выбери что работает лучше на этой виртуалке.
Допустим выбрано 2×1. Всё ещё мало? Экспериментируем с 4×1 и с 2×2.
Допустим 2×2 оказалось лучше. Если мало — надо экспериментировать с 4×2 и 2×4.
Если бы 4×1 было бы лучше чем 2×2, то эксперимент выглядел бы как 8×1 против 4×2.
В один прекрасный момент может получиться примерно так: 8×8 всё ещё мало, но 16×8 и 8×16 дают ещё худший результат. В этот момент стоит уменьшить коэффициент эксперимента (тестировать 12×8 против 8×12).
Однажды получится найти такой конфиг, с которым оно работает быстрее всего с текущими задачами на данной железке.
Не стоит забывать что эффективность сильно отличается как от железа, так и от характера выполняемых им задач. В каждой уникальной ситуации цифры будут свои и без глубинного анализа с полным побитовым пониманием процессов посчитать их можно только экспериментально.

Goury ★★★★★
()
Ответ на: комментарий от Goury

выбери что работает лучше

А по каким критериям и показателям смотреть что лучше? Как я пойму, что 16×8 дают худший результат, чем 8×8? Мне нужно на дни|недели занять сервер тестами и на каждую конфигурацию давать одинаковую нагрузку и смотреть за сколько будут отрабатывать таски?

Если вдруг на мой сайт нахлынет поток пользователей, с которым сервер за $5 уже не будет справляться, то я попрошу прокачать мой виртуальный сервер до более дорогого тарифа и мне снова придется на протяжении дней|недель подбирать нужное количество workers и concurrency, прежде чем смогу выжать с новых мощностей максимум?

girel
() автор топика
Ответ на: комментарий от girel

А ты думал что будет просто?

А по каким критериям и показателям смотреть что лучше?

А какие тебя интересуют? Вот по ним и смотри.

Мне нужно на дни|недели занять сервер тестами и на каждую конфигурацию давать одинаковую нагрузку и смотреть за сколько будут отрабатывать таски?

В идеале — да. На практике пойдёт и штатная нагрузка, просто сроки больше дай (я привёл сроки для типичного сайта васи пупкина, в идеальном тестировании достаточно пары минут на тест).

мне снова придется

Ничто не мешает изучить работу celery и своих скриптов на побитовом уровне. С таким пониманием можно будет просто посчитать. Нормальные хайлоады так и рассчитываются.
В случае с DO скорее всего надо будет просто увеличить количество воркеров пропорционально ядрам.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
Ответ на: комментарий от Goury

А куда смотреть, чтобы хоть для общего развития понять как делается этот побитовый анализ? В гугле пока нашлось только побитовое сравнение картинок/файлов и т.д.

girel
() автор топика
Ответ на: комментарий от girel

Может и есть что-нибудь, но я не встречал.
Тут довольно простая математика и понимание процессов нужно.
Если и есть какие-нибудь книги, то они называются как что-нибудь про high load.

Но вообще при задачах уровня виртуалки за $5 я бы не парился особо.
При таком бюджете и нагрузок больших быть не должно.

Goury ★★★★★
()

Omg, этот дурачок тебе конечно много чего наплел.

я действительно не понимаю как подобрать то самое идеальное количество

По факту если размер очереди не растет, значит воркеров достаточно.

A1
()
Ответ на: комментарий от A1

это не значит, что она разгребается максимально эффективно, трепло хама

Goury ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.