Все, я разрабатываю API-интерфейс на основе колб, используя uWSGI v2) в качестве сервера приложений (при необходимости, NGINX). .ini файл uWSGI является:Flask/uWSGI - слишком много процессов через некоторое время
[uwsgi]
module = WSGI
callable = app
master = true
processes = 5
socket = /var/uwsgi/api.sock
uid = gg_python
gid = www-data
vacuum = true
venv = /home/gg_python/flask_projects/api/apivenv3
die-on-term = true
daemonize = /tmp/uwsgi_daemonize.log
Update: вот uWSGI резюме стартап выход:
*** Starting uWSGI 2.0.10 (64bit) on [Fri Jun 26 08:31:52 2015] ***
compiled with version: 4.9.2 on 29 April 2015 17:23:06
os: Linux-3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24)
nodename: debian-api
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 2
current working directory: /home/gg_python/flask_projects
detected binary path: /home/gg_python/flask_projects/api/apivenv3/bin/uwsgi
your processes number limit is 7972
your memory page size is 4096 bytes
detected max file descriptor number: 65536
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /var/uwsgi/api.sock fd 3
Python version: 3.4.2 (default, Oct 8 2014, 10:47:48) [GCC 4.9.1]
PEP 405 virtualenv detected: /home/gg_python/flask_projects/api/apivenv3
Set PythonHome to /home/gg_python/flask_projects/api/apivenv3
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x19faca0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 436608 bytes (426 KB) for 5 cores
*** Operational MODE: preforking ***
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x19faca0 pid: 20775 (default app)
*** uWSGI is running in multiple interpreter mode ***
Через некоторое время (около 1 день от запуска uWSGI является достаточно, чтобы увидеть эффект), я Получают десятки открытых процессов. Скриншот HTOP (через несколько часов после перезагрузки):
Это становится намного дольше после того, как один день. Конечно, API становится менее отзывчивым. Как я могу отладить это? Любой способ увидеть, что поддерживает все эти процессы и подпроцессы? Обратите внимание, что API на самом деле не занят. На самом деле, я использую его только сейчас, и он редко имеет значительную нагрузку и никогда ничего близкого к требованию десятков процессов.
Любые идеи о том, как отладить эту проблему инфляции процесса?
Это проблема конфигурации uWSGI. Включены ли потоки, каков ваш режим форсирования и т. Д. (Не входите в конфигурацию подробно) –
Темы отключены, режим предпродак. Добавлена сводка автозагрузки. –
@FreekWiekmeijer, спасибо, ваш запрос подтолкнул меня в правильном направлении. По-видимому, это была проблема включения-потоков. –