首页 文章

uWSGI / nginx / Django在Amazon EC2 Micro实例上从Apache切换后表现不佳

提问于
浏览
0

我刚刚将我的服务器从Apache / mod_wsgi转到了nginx / uwsgi堆栈 . 但是,与Apache相比,我看到的表现非常糟糕,尽管 server load is the same/even less during Christmas. 任何想法都是为什么,我对uWSGI / Nginx堆栈很新?这是我的配置:

[uwsgi]

chdir = / srv / www / poka / app / poka module = nginx.wsgi home = / srv / www / poka / app / env / main env = DJANGO_SETTINGS_MODULE = settings.prod // master = true processes = 10 socket = / srv / www / poka / app / poka / nginx / poka.sock chmod-socket = 666 vacuum = true pidfile = /tmp/project-master.pid harakiri = 60 max-requests = 5000

daemonize = /var/log/uwsgi/poka.log

3 回答

  • 0

    你真的需要10个流程吗?为什么你不尝试少量? uWSGI Nginx可以使用2/4进程处理大量并发请求,也许瓶颈就在那里 .

  • 0

    您可以

    • monitor cpu / mem进行详细比较

    • 安装uwsgitop(通过pip install uwsgitop)来监控你的uwsgi进程

  • 0

    首先,您必须确定问题所在 . 假设你没有做任何狂热的事情,比如有大量负载的请求,我做了一些事情:

    nginx: 使用$upstream_response_time记录上游请求的持续时间 . 将其与$request_time的总响应时间进行比较 . 这告诉你,时间丢失的地方,即nginx是否有问题,或上游组件(uwsgi,django,数据库......)如果uwsgi是问题...

    uwsgi: 启用stats server,然后使用uwsgitop快速浏览统计数据如果uwsgi正常,请查看Python / Django正在做什么...

    uwsgi+python: 启用pytracebacker-sockets以查看 Worker 正在做什么 . 如果你看到 Worker 卡住,启用(如果你的情况下这是合理的)harakiri模式,那么uwsgi可以回收被困 Worker . 当使用harakiri时,不要忘记启用pytracebacker,因为当一个worker被杀死时,它将为你提供Python堆栈跟踪 .

    Django: 启用debug-toolbar以查看应用程序花费时间的位置和数量 .

    当您确定组件时,您已经更接近解决方案,并且可以提出更具体的问题 .

    (如果您正在做大请求,那么uwsgi / nginx的压缩设置和max-payload相关设置可能是很好的选择 . 它们让我们感到头疼 . )

相关问题