Gunicorn preload перезапускает рабочий, полностью перезагружается и перезагружается - PullRequest
0 голосов
/ 04 октября 2019

Я занимаюсь разработкой сервиса, в котором мы используем gunicorn, а колбу выполняют некоторые выводы ML. Служба выполняет предварительную загрузку моделей большого размера (40 г) в память на машине с 64 г.

Я использую следующие настройки.

workers = 10
threads = 2
worker_class = 'gthread'
preload_app = True
max_requests = 10000
max_requests_jitter = 1000
daemon = False 

Я ожидаю, чтокаждый рабочий перезапускается при достижении количества запросов, которые мы им задаем для перезапуска (также с учетом дрожания), однако, когда один рабочий перезапускается, каждый рабочий перезапускается, и он фактически перезагружает всю модель (40 г), поэтому все входящие запросы начинаютпровал. Я подумал, что используя джиттер, у меня не должно быть этой проблемы, потому что все рабочие перезагружаются, и что более важно, я могу избежать перезагрузки всей модели снова.

Я не уверен, что является основной причиной такого поведения. Эта проблема с памятью, что я использую слишком много памяти по сравнению с тем, что доступно?

...