【发布时间】: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 响应将是相对较大,所以我认为这里不会有很大的(如果有的话)性能提升。
-
非常感谢。我会尝试您建议的方式,看看是否有任何性能提升。