Рекомендуемые настройки для uwsgi
У меня есть приложение mysql + django + uwsgi + nginx, и недавно у меня возникли некоторые проблемы с конфигурацией uwsgi по умолчанию, поэтому я хочу перенастроить его, но я понятия не имею, какие рекомендуемые значения.
Другая проблема заключается в том, что я не смог найти настройки по умолчанию, которые использует uwsgi, и это очень затрудняет отладку.
Используя конфигурацию по умолчанию, сайт был слишком медленным при реальном трафике (слишком много запросов застряло в ожидании сокета uwsgi). Поэтому я использовал конфигурация из какого-то учебника, и он имел cpu-affinity=1
и processes=4
, которые исправили проблему. Конфигурация также имела limit-as=512
, и теперь приложение получает MemoryErrors, поэтому я думаю, что 512 МБ недостаточно.
Мои вопросы:
-
Как я могу определить рекомендуемые параметры? Мне не нужно, чтобы он был супер совершенным, просто чтобы обрабатывать трафик по пути спуска и не врезаться из-за ошибок памяти и т. д. В частности, рекомендуемое значение для
limit-as
- это то, что мне нужно больше всего. сейчас. -
Каковы значения параметров uwsgi по умолчанию?
Спасибо!
1 ответ:
Обычно мы запускаем довольно маленькие приложения... Редко более 2000 запросов в минуту. Но в любом случае его трудно сравнить с различными приложениями. Вот что мы используем на производстве:
Haharakiri = 20 # respawn processes taking more than 20 seconds limit-as = 256 # limit the project to 256 MB max-requests = 5000 # respawn processes after serving 5000 requests daemonize = /var/log/uwsgi/yourproject.log # background the process & log
Uwsgi_conf.yml
processes: 4 threads: 4 # This part might be important too, that way you limit the log file to 200 MB and # rotate it once log-maxsize : 200000000 log-backupname : /var/log/uwsgi/yourproject_backup.log
Мы используем следующий проект для развертывания и настройки наших приложений django. (Никакой документации здесь нет, извините... Просто использовал его для внутренне)
Как вы можете сказать, если вы настроили его правильно... ? Поскольку это во многом зависит от вашего приложения, я бы рекомендовал использовать некоторые инструменты мониторинга, такие как newrelic.com а затем проанализируйте его.