2016-10-27 10 views
0

я унаследовал унаследованное приложение со следующей структурой:Параметры профилирования для приложения gunicorn/Pyramid?

gunicorn (с 64 работниками) запускаются и указал на приложении paste.deploy, который выглядит следующим образом:

from paste.deploy import loadapp 
import gevent 
import json 

def ohmygod(): 
    while 1: 
     time.sleep(30) 
     horrible, extremely expensive debugging function() 

gevent.spawn(ohmygod) 

application = loadapp('config:scripts/production.ini', relative_to='/blah') 

производительности Этого приложения является бизнесом но мои попытки удалить этот код нуждаются в каких-то профилирующих доказательствах.

Я немного из моей лиги, когда дело доходит до отладки геев внутри пушки.

Если я создал cProfiler внутри этой функции, он бы взял данные извне gentent, то есть .: из основного? Я думаю, это было бы желательно.

Еще одна проблема заключается в том, что я не могу изменить производственный код. У меня есть доступ к тестовым средам, но я не могу реплицировать прямой трафик. Можно ли безопасно подключаться к пусковым процессам и профилировать их без изменения производственного кода?

Любые советы или идеи, которые очень ценятся.

gunicorn v18.0, GEvent v1.0.1, пирамида 1.4.5, Python 2.7.6, работающие на Ubuntu 12 x64

+0

[* Попробуйте это. *] (Http://stackoverflow.com/a/4299378/23771) Это ничего не будет стоить вам. На самом деле есть много [* математического обоснования *] (http://scicomp.stackexchange.com/a/2719/1262), если это поможет. –

ответ

1

Попробуйте использовать App EnLight межплатформенное выяснить узкие места: https://getappenlight.com/page/api/main.html

You могут украшать некоторые функции до времени их отдельно.

+0

Спасибо Ergo. Одна из причин, по которой я опубликовал этот вопрос, заключается в том, что я не уверен, где начинаются пирамидальные пистолеты и пирамида. Является ли функция ohmygod() внутри пирамиды? –

+1

'ohmygod()' можно рассматривать как часть приложения пирамиды, если вы создаете отдельную зеленую оболочку из приложения пирамиды wsgi - ваш пример не содержит ничего, что связано с пирамидой, - трудно угадать, не более конкретный пример. Вообще-то пушки-это всего лишь сервер WSGI, и ваша бизнес-логика живет в приложении пирамиды. – Ergo