Как 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 секунд, не "забрал" все ваши возможности по обслуживанию.

Вернуться на верх