Eu tenho um aplicativo Django para o qual eu quero limitar os recursos usados pelo uWSGI para 12288MB e processa (workers) para 6.
Com três aplicativos separados, posso limitar cada um a dois trabalhadores e cada trabalhador a 2048 MB de memória ( limit-as
), mas prefiro permitir que todos os três aplicativos compartilhem a mesma quantidade de recursos (todos eles relacionado, e 1 não é mais importante do que o outro - eles são apenas aplicativos separados, porque cada um usa configurações do Python). Eu não quero um aplicativo para bater, enquanto os outros 2 estão tomando Mai Tais na praia com 1,5 GB de RAM por aí e processador para pegar.
Meu uWSGI conf tem esta aparência:
--emperor /etc/uwsgi/apps-enabled
--disable-logging
--die-on-term
--master
--uid www-data
--gid www-data
--logto /var/log/uwsgi/emperor.log
Cada aplicativo é semelhante a:
[uwsgi]
socket = /tmp/app-1.uwsgi.sock
workers = 2
threads = 40
limit-as = 2048
harakiri = 20
max-requests = 1600
plugins = python
module = myapp.wsgi
callable = application
venv = /var/www/myapp/deps/current/venv
chdir = /var/www/myapp/deps/current/repo/src
touch-reload = /var/www/myapp/uwsgi/reload
auto-procname = true
procname-prefix-spaced = myapp
vacuum = true
reload-mercy = 8
BTW (side-question), todas essas configurações são intercambiáveis? Tipo, posso adicionar configurações de um aplicativo ao principal uWSGI conf (aquelas que são as mesmas para todos os três aplicativos) e, da mesma forma, adicionar coisas como log-to
a aplicativos específicos - não tinha certeza se todas as configurações eram intercambiáveis .