Python gunicorn&x2B;django-实现最大吞吐量的良好生产级别设置是什么?

Python gunicorn&x2B;django-实现最大吞吐量的良好生产级别设置是什么?,python,django,playframework,gunicorn,Python,Django,Playframework,Gunicorn,我正在使用gunicorn+django作为我的应用程序。因为我的应用程序没有任何静态内容可供服务,所以我现在不使用nginx。(我使用的是MacBookPro-8GB内存,2.7GHz,英特尔i5) 我做的唯一设置是为gunicorn- import multiprocessing bind = '127.0.0.1:8000' limit_request_line = 0 backlog = 2048 workers = multiprocessing.cpu_count() * 2 + 1

我正在使用gunicorn+django作为我的应用程序。因为我的应用程序没有任何静态内容可供服务,所以我现在不使用nginx。(我使用的是MacBookPro-8GB内存,2.7GHz,英特尔i5)

我做的唯一设置是为gunicorn-

import multiprocessing
bind = '127.0.0.1:8000'
limit_request_line = 0
backlog = 2048
workers = multiprocessing.cpu_count() * 2 + 1
loglevel = 'critical'
我使用“jmeter”进行了一些负载测试,在我的django应用程序中点击了一个非常简单的控制器,它只回显查询参数(实际上没有计算)

我观察到大约560个请求/秒。这是我们用这套技术能得到的最好的吗?我甚至尝试了“eventlet”和“gevent”,但都没有成功

我用Play Framework做了类似的实验,在默认配置下能够实现750个请求/秒

然而,当我试着

workers = multiprocessing.cpu_count() * 8 + 1
我能够获得更好的性能,但这种配置感觉不正确

是python的速度慢了很多,还是我犯了一些错误

更新:


我尝试在nginx后面使用gunicorn,并取得了一些改进。请求/秒从560提高到632。谢谢丹尼尔的建议。但这仍然没有达到我的目标。我是否缺少django/gunicorn中的一些配置?

如果不在前端使用适当的反向代理服务器,您将永远无法获得适当的性能。仅仅因为你没有任何静态内容(什么,真的吗?甚至连一个基本的CSS文件都没有?)就没有理由不使用nginx。嗨,丹尼尔,谢谢你的回复。该应用程序只是一个API,因此没有css/html。大多数文档都指向仅将nginx用作静态文件的反向代理。你能帮我理解nginx在一个没有任何静态文件的设置中的作用吗?我希望你能给我指出一些你所声称的文档。反向代理在服务静态文件方面没有任何作用;在这样做时,nginx直接充当web服务器。相反,反向代理是关于缓冲对应用服务器的请求(在本例中为gunicorn):请参阅。谢谢Daniel!你让我明白了:)我将设置nginx并返回结果。你对gunicorn/django设置有什么建议可以帮助我提高吞吐量吗?嗨,Daniel,我尝试了nginx方法,得到了以下结果:“workers=multiprocessing.cpu_count()*2+1”为632个请求/秒,“workers=multiprocessing.cpu_count()*8+1”为785个请求/秒。这比560请求/秒好,但我想我们应该能够进一步推动这一点。你是怎么想的?我使用unix套接字文件连接gunicorn和nginx。