使用 gevent worker 作为 Websocket 服务端,为了避免断线,浏览器上用 setInterval 定时重复建立 Websocket,结果导致 gevent 不会自动释放之前废弃的连接,内存快要溢出了。
开始以为客户端重复发起 websocket 连接,会覆盖先前的连接,结果发现没有。
客户端发起新的 websocket 连接,服务器并没有立即销毁之前废弃的连接,久而久之,内存里堆砌了越来越多的废弃连接。
问题:
既希望避免客户端意外断线,没法自动重新连接;
又希望不要把服务器内存逐渐挤爆了。
发起重新连接的时候,把客户端已经关闭的 socket 连接清除了。
怎么自动回收废弃连接呢?
开始以为客户端重复发起 websocket 连接,会覆盖先前的连接,结果发现没有。
客户端发起新的 websocket 连接,服务器并没有立即销毁之前废弃的连接,久而久之,内存里堆砌了越来越多的废弃连接。
问题:
既希望避免客户端意外断线,没法自动重新连接;
又希望不要把服务器内存逐渐挤爆了。
发起重新连接的时候,把客户端已经关闭的 socket 连接清除了。
怎么自动回收废弃连接呢?