Как gunicorn может обрабатывать сотни тысяч запросов в секунду для django?
Из документации - Сколько рабочих,
НЕ увеличивайте количество рабочих процессов до количества клиентов, которых вы ожидаете получить. Gunicorn должен иметь всего 4-12 рабочих процессов для обработки сотен или тысяч запросов в секунду.
Обычно мы рекомендуем (2 x $num_cores) + 1 в качестве количества рабочих для начала.
От потоков,
Количество рабочих потоков для обработки запросов.
Запустите каждого рабочего с указанным числом потоков.
Целое положительное число, обычно в диапазоне 2-4 x $(NUM_CORES). Вы захотите немного варьировать это значение, чтобы найти оптимальное для рабочей нагрузки вашего конкретного приложения.
Теперь вопрос в том, какое количество потоков и рабочих может обслуживать сотни или тысячи запросов в секунду?
Допустим, у меня двухъядерная машина, и я установил 5 рабочих и 8 потоков. И я могу обслужить 40 одновременных запросов?
Если я собираюсь обслуживать сотни или тысячи запросов, мне понадобится сотня ядер?
эту строку очень трудно понять:
Gunicorn должен иметь только 4-12 рабочих процессов для обработки сотен или тысяч запросов в секунду.
Теперь вопрос в том, какое количество потоков и рабочих может обслуживать сотни или тысячи запросов в секунду? Допустим, у меня двухъядерная машина, и я установил 5 рабочих и 8 потоков. И я могу обслужить 40 одновременных запросов?
Да, с 5 рабочими процессами, каждый из которых имеет 8 потоков, можно обслужить 40 одновременных запросов. Насколько быстро они будут обслуживаться на двухъядерном компьютере - другой вопрос.
Если я собираюсь обслуживать сотни или тысячи запросов, мне понадобится сотня ядер?
Не совсем так. Запросы в секунду - это не то же самое, что "одновременные запросы".
Если на обработку каждого запроса уходит ровно 1 миллисекунда, то один рабочий может обслужить 1000 RPS. Если каждый запрос занимает 10 миллисекунд, то один рабочий обслуживает 100 RPS.
Если некоторые запросы занимают 10 миллисекунд, а другие, скажем, до 5 секунд, то вам понадобится более одного параллельного работника, чтобы один запрос, который занимает 5 секунд, не "забрал" все ваши возможности по обслуживанию.