Gunicorn и Gevent не используя все ресурсы - PullRequest
0 голосов
/ 24 января 2019

Gunicorn и gevent не используют ресурсы, о которых я говорю.Когда я говорю gunicorn использовать одного работника, он использует одного работника и максимизирует одно ядро.Если я скажу использовать 4 рабочих, это распределит ОДНО ядро ​​по 4 различным рабочим.Я хочу, чтобы у одного работника был один процессор.Та же проблема, когда я использую опцию --threads.

У меня есть движок NER, который загружает x МБ памяти графического процессора для модели.Теперь я хочу максимизировать количество запросов к этому сервису.На данный момент мой лучший результат - gunicorn -t 120 -w 4 -k gevent --threads 12 -b 0.0.0.0:8980 script:app, что дает ~ 2,1 тыс. Запросов / мин.При проверке использования ресурса, как и ожидалось, при загрузке модели он используется очень часто.Но при фактическом вызове API, похоже, совсем не используется.

Загрузка модели.

Вызов API.

Я хочу увеличить пропускную способность.Увеличение количества потоков и рабочих, кажется, не имеет значения ..

Ps Я работаю на мощной машине, поэтому ресурсы не являются проблемой.

Кстати,Лучше всего было бы иметь одного работника, который фактически загружает модель, а затем несколько работников, использующих эту модель.Одна из больших проблем на данный момент заключается в том, что у меня заканчивается память GPU, когда у меня +12 рабочих из-за того, что каждому работнику приходится загружать модель в память GPU.Есть какой-либо способ сделать это?Если я правильно понимаю gevent, то об этом нужно позаботиться?

Заранее спасибо

ОБНОВЛЕНИЕ Просто заметил, что gunicorn вообще ничего не делал.Я получаю те же результаты, работая на сервисе без Gunicorn.Что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...