Я занимаюсь разработкой сервиса, в котором мы используем gunicorn, а колбу выполняют некоторые выводы ML. Служба выполняет предварительную загрузку моделей большого размера (40 г) в память на машине с 64 г.
Я использую следующие настройки.
workers = 10
threads = 2
worker_class = 'gthread'
preload_app = True
max_requests = 10000
max_requests_jitter = 1000
daemon = False
Я ожидаю, чтокаждый рабочий перезапускается при достижении количества запросов, которые мы им задаем для перезапуска (также с учетом дрожания), однако, когда один рабочий перезапускается, каждый рабочий перезапускается, и он фактически перезагружает всю модель (40 г), поэтому все входящие запросы начинаютпровал. Я подумал, что используя джиттер, у меня не должно быть этой проблемы, потому что все рабочие перезагружаются, и что более важно, я могу избежать перезагрузки всей модели снова.
Я не уверен, что является основной причиной такого поведения. Эта проблема с памятью, что я использую слишком много памяти по сравнению с тем, что доступно?