Django + Gunicorn + nginx的性能非常差.甚至无法获得8 qps

kam*_*nga 7 django nginx gunicorn

我正在使用nginx + gunicorn来提供django应用程序并将其部署在EC2(m1.small实例)上.

我有这个观点:

def hi(request):
    return HttpResponse('hi', content_type='text/plain')
Run Code Online (Sandbox Code Playgroud)

映射到url /hi/.因此,它基本上只是返回hi[myurl]/hi.

现在当我加载测试这个域([myurl]/hi)时loader.io,这甚至不会超过250个客户端超过30秒测试.(每秒约8个请求)

这是我的nginx access.log文件的一部分.它基本上只是499在几秒后给出了200s.(loader.io中的超时设置为10秒)

我必须做一些严重的错误.我怎么知道的?

我用它来描述它yet-another-django-profiler,以下是输出: 在此输入图像描述

我也在Elastic Beanstalk(它使用Apache服务器)上部署了这个django应用程序(m3.large实例),并且我也得到了糟糕的性能.我现在的中间件是:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    # 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    # 'silk.middleware.SilkyMiddleware',
    # 'yet_another_django_profiler.middleware.ProfilerMiddleware',
    # 'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # 'django.middleware.security.SecurityMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

之前没有一个被评论过.当我评论出这9行时,我获得了性能提升.现在我可以从这个应用程序中获得60 qps.但我认为我在做更多的错误,并且可以进一步扩展.

小智 2

这只是在黑暗中刺伤,没有更多的内容可以继续,我没有足够的声誉来评论你原来的问题:我注意到你的gunicorn启动脚本有

--日志级别=调试

如果您有调试级别日志记录(在gunicorn中,尤其是在Django项目中),它将解释为什么通过注释掉中间件来提高性能,以及为什么您会在不同的部署架构中不断降低性能。

调试级别日志记录输出大量信息。