[uwsgi] # TODO: use uwsgi protocol instead http: -1 server proccess http = :8080 processes = 2 # idle - shutdown inactive workers after N idle seconds: -3 process idle = 900 offload-threads = 1 mimefile = /etc/mime.types check-static = custom/static/ check-static = common/static/ check-static = cmf/static/ check-static = dist/cmf-angular/ # Plugins Static Allow Access # Allow real path with resolved symlinks static-safe = /mnt/shared/config/eva-app/plugins # For vm: static-safe = /opt/eva-app/custom/plugins # route = ^/notfound break:404 Not Found route = ^/socket.io/.* uwsgi:/tmp/soketio-eva-app.sock,0,0 # https://eva.my.local/plugins/votes/static/hello.txt -> /opt/eva-app/custom/plugins/votes/static/ route = ^/plugins/([^/]+)/static/(.*) static:/opt/eva-app/custom/plugins/$1/static/$2 route = ^/plugins/.* break:404 Not Found # 8 часов * 100 пользователей + небольшой запас. По идее в будущем здесь ещё от SLA рулиться можно. max-requests = 3000000 # 8 часов: 8 * 3600 max-worker-lifetime = 28800 # страхуемся от утечек памяти за такое время # UPD 2023-04 Увеличиваем память, пока не фиксим - пишем в долг TEM-1625009337 # reload-on-rss = 512 reload-on-rss = 1200 # помираем чуть быстрее, всё равно зависли, наибольшая потенциальная проблема - потеря данных (не закоммитимся) worker-reload-mercy = 10 # по-умолчанию буфер 4096, увеличим чтобы избежать ошибок # invalid request block size: 4118 (max 4096)...skip buffer-size = 32768 # Лимит активных псевдо-потоков в евент-лупе gevent = 50