如何在生产环境中对 Gunicorn 上的 Django 进行分析

How to profile Django on Gunicorn in production

提问人:Wolkenarchitekt 提问时间:10/29/2014 最后编辑:Wolkenarchitekt 更新时间:7/4/2015 访问量:4041

问:

我有一个内存泄漏,很难在测试环境中重现。 因此,我想在有限的时间段内分析我的生产服务器,以大致了解哪些对象占用了最多的内存。 由于使用了绿点,似乎对独角兽进行剖析并不容易。

我正在运行:

  • 蟒蛇 2.7.3
  • 独角兽 18.0
  • 姜戈 1.6

这是我的 Gunicorn 配置:

CONFIG = {
    'environment': {
        'DJANGO_SETTINGS_MODULE': 'myapp.settings',
    },
    'user': 'myapp',
    'group': 'myapp',
    'args': (
        '--bind=127.0.0.1:8088',
        '--workers=8',
        '--worker-class=socketio.sgunicorn.GeventSocketIOWorker',
        '--timeout=300',
        '--error-logfile=/var/log/gunicorn/myapp-error.log',
        '--max-requests=100',
        '--log-level=debug',
        'myapp.wsgi:application',
    ),
}

使用 Gunicorn 运行 Django 时进行内存分析的最佳方法是什么?

Django 分析 gunicorn gevent

评论

1赞 bad_keypoints 6/24/2015
您可以尝试编写自己的自定义分析中间件。看看这个:gun.io/blog/fast-as-fuck-django-part-1-using-a-profiler。虽然,那里的作者建议自己不要在生产中使用脚本。下面是一个 repo 声称可以做一些你想做的事情: github.com/theospears/django-speedbar

答:

0赞 Ezequiel Bertti 7/4/2015 #1

我使用 New Relic 服务:

http://newrelic.com/

他们有免费计划,有 24 小时数据恢复。

非常容易设置:

http://newrelic.com/python#installation