分析选项的gunicorn /金字塔应用程序



我继承了一个具有以下结构的遗留应用程序:

gunicorn(有64个worker)被启动并指向一个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')

这个应用程序的性能对业务至关重要,但我试图删除这些代码需要一些分析证据。

当谈到调试gunicorn内部的事件时,我有点不在行。

如果我在该函数中创建了一个cProfiler,它会从事件外部获取数据吗?从主?我认为这是可取的。

另一个问题是我不能修改产品代码。我可以访问测试环境,但我不能复制实时流量。是否有可能在不修改生产代码的情况下安全地附加到正在运行的gunicorn过程并对其进行分析?

任何提示或见解非常感谢。

gunicorn v18.0, gevent v1.0.1, pyramid 1.4.5, python 2.7.6在Ubuntu 12 x64上运行

尝试使用app enlight中间件找出瓶颈:https://getappenlight.com/page/api/main.html

最新更新