У меня есть приложение фляги, которое работает за uwsgi + nginx в linux (centos).
Я хочу профилировать приложение, чтобы найти узкие места (время, затрачиваемое на каждую функцию).Это тяжелое приложение с 8 рабочими, которые работают на производстве.
Хотя это кажется довольно элементарным требованием, я еще не нашел хорошую систему профилирования для производства.
Я пытался использоватьбиблиотека сигналов python для создания профиля, как предложено в "https://www.nylas.com/blog/performance/" - но я столкнулся с проблемой: операция signal () разрешена только в главном потоке, в то время как в производственном uwsgi работает мало рабочих. Далее, из соображений производительностимы разрешаем сиротам, поэтому запуск операции на главном не будет делать только для сирот. Любое предложение будет высоко ценится!
это наша конфигурация uwsgi:
[uwsgi]
vhost = true
uid = vagrant
base = /project/
wsgi-file = /project/webserver/src/wsgi.py
chdir = %(base)
chown-socket = nginx:nginx
catch-exceptions = true
uid = nginx
gid = nginx
chmod-socket = 777
socket = /var/run/webpage.com.uwsgi.socket
plugin = python,dogstatsd
#plugin = python
master = True
callable = app
processes = 8
threads = 24
max-requests = 64
#reload-on-as = 2000
reload-mercy = 3600
#reload-on-rss = 4000
#limit-as = 10000
cpu-affinity = 1
#thread-stacksize = 1024
max-fd = 250000
#buffer-size = 30000
thunder-lock = true
vacuum = true
enable-threads = true
#no-orphans = true
die-on-term = true
#socket-timeout = 600
#websocket-max-size = 16000
#logto = /var/log/uwsgi/log.txt
stats = /tmp/uwsgi_stats.socket