Как решить, стоит ли увеличивать количество процессов asyncio aiohttp? - PullRequest
0 голосов
/ 28 апреля 2018

Я бы хотел использовать asyncio aiohttp для создания веб-приложения, которое должно масштабироваться более чем на дюжину процессоров?

Как мне решить увеличить количество асинхронных процессов?

Должен ли я контролировать IO или CPU и принять решение об этом?

1 Ответ

0 голосов
/ 01 мая 2018

Когда вы запускаете сервер aiohttp, он будет обслуживать все входящие запросы, используя все доступные жесткие диски / оперативную память / сетевые ресурсы, а ядро ​​ЦП работает на ресурсах.

Если на вашем компьютере установлено несколько ядер ЦП, лучше всего запустить aiohttp за nginx и настроить его на использование всех ядер (подробнее здесь ). Это позволит вам использовать все доступные ресурсы компьютера без необходимости настраивать что-то другое вручную. Плюс nginx будет обслуживать статические файлы намного лучше, чем чистые aiohttp.

Я думаю, что выше, будет лучше, если у вас не очень загруженное приложение.

В противном случае вы все равно можете столкнуться с ограничением ресурсов текущего компьютера. Затем вы должны определить, где находится узкое место (это жесткий диск, ОЗУ, ЦП, емкость сети?) И решить, какое решение выбрать:

  • Увеличение текущих ресурсов машины («Вертикальное масштабирование»)
  • Запуск приложения на нескольких машинах («Горизонтальное масштабирование»)
  • Оптимизация кода вашего приложения («профилирование» + «оптимизация»)

Каждый путь выше - это отдельная тема.

...