有没有办法更改Django项目的TCP设置



我一直在用Django构建一个项目。当我由于项目中页面的缓慢而运行探查器时,结果是:

10 0.503 0.050 0.503 0.050{"_socket.socket"对象的方法"recv_tinto"}

它说几乎99%的通过时间都用于方法recv_into((。经过一些研究,我了解到原因是Nagel的算法,该算法的目标是只有在缓冲区已满或没有更多数据包可传输时才发送数据包。我知道我必须禁用这个算法并使用TCP_NODELAY,但我不知道怎么做,而且它应该只影响这个Django项目。

任何帮助都将不胜感激。

不知道django设置。我想你可以在做到这一点

负载均衡器(nginx(级别而不是django,根据http指令。

http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay

在uwsgi级别:

https://uwsgi-docs.readthedocs.io/en/latest/Options.html#tcp-nodelay

使用nginx作为代理并进入您可以在http块中设置的配置

http{
#...
tcp_nodelay   off;
#...
}

您可以尝试使用"gevent",这可以通过使用协作线程来提高套接字性能,从而对我们有所帮助。

下面的线程将帮助您组合Django和gevent,它可以提供基本的

from gevent import monkey; monkey.patch_all()
from gevent.wsgi import WSGIServer
from django.core.management import setup_environ    
import settings
setup_environ(settings)
from django.core.handlers.wsgi import WSGIHandler as DjangoWSGIApp
application = DjangoWSGIApp()
server = WSGIServer(("127.0.0.1", 1234), application)
print "Starting server on http://127.0.0.1:1234"
server.serve_forever()

来源:

如何结合django加gevent的基础?

http://www.gevent.org/

您是否在settings.py文件中使用缓存设置?请检查您是否在那里启用了tcp_nodelay,如果启用了,请将其删除或尝试清除浏览器缓存。

最新更新