Утечка семафоров убивает производительность uWSGI, как их отслеживать и правильно утилизировать? - PullRequest
0 голосов
/ 11 февраля 2019

Я использую сервер 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

Мне кажется, что я в корне неправильно понимаю некоторую стадию процесса настройки / развертывания - нотак как все остальное работает, я не уверен где.Если кто-то сталкивался с подобной проблемой или имеет предложение о том, как лучше всего справиться с этим типом утечки, я был бы очень благодарен, спасибо!

...