Я использую сервер Flask + uWSGI + NGINX.Когда сервер запускается впервые, он быстро реагирует и возвращает ответ от довольно надежного набора скриптов за ~ 3 секунды.Однако если я оставлю приложение запущенным, оно будет работать все медленнее и медленнее.Это исправлено при перезапуске приложения, но я хочу менее грубое решение.
При попытке диагностировать проблему, я понял, что, если я оставлю приложение запущенным в течение длительного периода, вызов будет занимать 100% доступного процессора.Затем я начал читать свои журналы и обнаружил это предупреждение
unable to load configuration from from multiprocessing.semaphore_tracker import main;main(36)
Теперь я думаю, что есть какая-то утечка семафора, когда рабочие процессы порождают дочерние процессы, не отслеживаются и, в конце концов, едятвсе доступные ресурсы на сервере.
К сожалению, я понятия не имею, как это исправить.Я не знаю, в каком разделе приложения не удается импортировать semaphore_tracker, и поскольку многопроцессорная обработка является частью базового Python 3. Я не знаю, как его устранить.
Пока чтодобавлены параметры конфигурации harakiri и max_requests в попытке «тупо бороться» с утечками памяти, но я понятия не имею, поможет ли это устранить то, что, по моему мнению, является основной проблемой (семафоры без отслеживания).
Ниже приведеноМой конфигурационный файл uWSGI:
module = wsgi:app
master = true
processes = 16
socket = api.sock
chmod-socket = 660
vacuum = true
harakiri = 30
die-on-term = true
max-requests = 3
А вот системный код, который я использую.
[Start]
After=network.target
[Service]
User=ubuntu
Group=www-data
Environment=/home/ubuntu/api/env/bin
WorkingDirectory=/home/ubuntu/api
ExecStart=/home/ubuntu/api/env/bin/uwsgi --ini api.ini --master --enable-threads
[Install]
WantedBy=multi-user.target
Мне кажется, что я в корне неправильно понимаю некоторую стадию процесса настройки / развертывания - нотак как все остальное работает, я не уверен где.Если кто-то сталкивался с подобной проблемой или имеет предложение о том, как лучше всего справиться с этим типом утечки, я был бы очень благодарен, спасибо!