【问题标题】:Is there a way to change TCP settings for Django project?有没有办法更改 Django 项目的 TCP 设置?
【发布时间】:2020-03-09 06:59:53
【问题描述】:

我一直在做一个用 Django 构建的项目。当我由于项目中的页面速度慢而运行分析器时,这是一行结果:

10 0.503 0.050 0.503 0.050 {“_socket.socket”对象的“recv_into”方法}

这表明几乎 99% 的时间都用于方法 recv_into()。经过一番研究,我了解到原因是 Nagel 算法的目标是仅在缓冲区已满或没有更多数据包要传输时才发送数据包。我知道我必须禁用这个算法并使用 TCP_NODELAY 但我不知道如何,它也应该只影响这个 Django 项目。

任何帮助将不胜感激。

【问题讨论】:

  • 您具体介绍了什么?你在使用开发服务器吗?
  • 我已经描述了一种特定的方法,在该方法中处理来自数据库的数据(使用 mongoengine)。我没有使用开发服务器。使用的有:Python、Django、mongoengine 和 REST framework。
  • 不是您问题的直接答案,但 TCP_DELAY 仅在有许多小数据包来回传输时才相关,例如分布式游戏服务器等。我认为 mongodb 响应将是相对较大,所以我认为这里不会有很大的(如果有的话)性能提升。
  • 非常感谢。我会尝试您建议的方式,看看是否有任何性能提升。

标签: python django tcp


【解决方案1】:

不知道 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您可以尝试使用“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()
      

      来源:

      how to combine django plus gevent the basics?

      http://www.gevent.org/

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 感谢您抽出宝贵时间回答问题。 settings.py 中没有关于缓存的内容,所以我认为这不是答案。
        猜你喜欢
        • 2020-08-01
        • 2015-06-26
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-02-25
        • 2014-07-04
        • 2016-03-12
        • 2019-11-18
        相关资源
        最近更新 更多