профилирование производства колб за uwsgi + nginx - PullRequest
1 голос
/ 09 июля 2019

У меня есть приложение фляги, которое работает за 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
...