`` –Workers``

Based on this comment from Odony: https://github.com/odoo/odoo/issues/39825#issuecomment-555256475

Таким образом, в документации говорится, что один работник может обслуживать 6 пользователей. Это означает, что работник может обрабатывать в среднем ~ 6 тяжелых операций чтения в секунду (150 мс каждая) = 6 веб-запросов / с. Если пользователь активирует около 60 тяжелых запросов в минуту во время активного использования, это в среднем 1 требование / с, поэтому 6 пользователей могут максимально использовать работника во время пиков, когда все они активны. Но на самом деле люди не создают устойчивую нагрузку, и реальное использование со временем будет в среднем намного меньше, может быть, 20% от этого, так что один работник может справиться с десятками обычных пользователей. Если вы не сталкиваетесь с патологическими случаями, например, с классом, в котором все ученики нажимают одновременно, или с тяжелыми автоматизированными сценариями RPC (не-тяжелые пользователи), вы можете начать с 1 работника на 30 пользователей, может даже 40 на нескольких случай арендатора, когда пользователи распределены по разным часовым поясам, и не все базы данных активны одновременно.

Если вы не знаете, сколько рабочих вам потребуется, начните с 10, но постарайтесь иметь гибкость (в ОЗУ и ЦП) для более удобного развертывания по мере необходимости. Мониторинг вашей системы, чтобы увидеть, как вы делаете с точки зрения ресурсов и скорости транзакций.

Другие вещи для рассмотрения:

  • Всегда настраивайте более 6 рабочих, так как браузеры должны будут открывать много параллельных соединений, и вы не хотите, чтобы они ставились в очередь, так как пользователи будут чувствовать задержки. 6 или 8 - минимум, даже если у вас недостаточно процессоров.
  • Реальное ограничение количества рабочих - это оперативная память, а не процессоры. Если рабочие x limit_memory_hard намного больше доступной оперативной памяти, вы можете вызвать обмен или сбой. В наши дни, по крайней мере, 32 ГБ или 64 ГБ ОЗУ, это немного, и если вы не выделите все для Odoo, остальное будет полезно для кэша ОС и буферов.
  • Вы можете использовать 2 x num_cpus + 1 работника, чтобы убедиться, что вы будете использовать все доступные ядра. Имея меньше работников, чем это трата ресурсов. Но вы можете иметь больше рабочих, если хотите, если у вас достаточно оперативной памяти.
  • Скорость процессора имеет значение, поэтому постарайтесь получить максимальную тактовую частоту процессора, какую только сможете. Лучше разделить рабочих на несколько серверов с меньшим количеством процессорных ядер, но с более высокой тактовой частотой.

Longpolling

Скрытой особенностью Multiprocessing является автоматический запуск процесса gevent для поддержки longpolling.

Longpolling - это дополнительный процесс, т.е. если у вас `` –workers = 2``, вы получите 2 рабочих процесса и 1 процесс gevent