【问题标题】:Autobahn Twisted WebSocket memory leakAutobahn Twisted WebSocket 内存泄漏
【发布时间】:2022-05-22 17:58:43
【问题描述】:

我正在使用 websocket 服务器并尝试使用 python twisted + autobahn,但我相信我遇到了内存泄漏。事实上,我可以使用https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo 上的回显代码来重现它

我看到的症状是在服务器端,连接关闭后协议实例永远不会被释放。

我尝试以各种方式对此进行检查 - 最简单的是在 del 方法中添加打印,更复杂的是使用 pdb 和 gc 进行检查。是的 - 随着连接的建立和关闭,观察进程的内存使用稳步攀升。

我期望发生的是 - 在 onClose 完成后,协议实例应该永远消失。事实上,我还有其他基于 twisted 的服务器实现(但没有高速公路 websockets),并且我已经确认它在那里是如何工作的(尽管我使用 connectionLost 代替)。

有人知道发生了什么吗?

【问题讨论】:

  • 如果您在使用 autobahn-python 的纯演示代码时遇到问题,您应该file a bug report
  • 我怎么没想到!该死的好点......

标签: python websocket twisted autobahn


【解决方案1】:

我遇到了将实时数据分发给客户端的高速公路网络套接字服务器的内存溢出问题。然而,问题在于保持连接打开但无法使用数据的客户端。

这导致内存在服务器端不断累积。我能够通过找到负责保存缓冲区数据的变量来解决这个问题。它是来自传输层的 transport._tempDataBuffer 变量。通过定义缓冲区的最大大小限制并在满时清除它,为我解决了这个问题。

不知道你指的是不是同一个问题,看看有没有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多