sam*_*bev 5 memory-leaks twisted tornado websocket autobahn
我在python中编写一个Web套接字服务器.我尝试了下面的方法,包括txws,autobahn和tornado,都有类似的结果.
我似乎有大量的内存消耗和安全的websockets,我无法弄清楚这可能发生在何处或为何.以下是龙卷风的一个例子,但我可以提供高速公路或txws的例子.
import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web
import json
class AuthHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection for auth'
def on_message(self, message):
message = json.loads(message)
client_id = message['client_id']
if client_id not in app.clients:
app.clients[client_id] = self
self.write_message('Agent Recorded')
def on_close(self):
print 'auth connection closed'
class MsgHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection for msg'
def on_message(self, message):
message = json.loads(message)
to_client = message['client_id']
if to_client in app.clients:
app.clients[to_client].write_message('You got a message')
def on_close(self):
print 'msg connection closed'
app = tornado.web.Application([
(r'/auth', AuthHandler),
(r'/msg', MsgHandler)
])
app.clients = {}
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(app, ssl_options={
'certfile': 'tests/keys/server.crt',
'keyfile': 'tests/keys/server.key'
})
http_server.listen(8000)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
在建立了大约10,000个连接之后,我发现我使用的是大约700MB内存和SSL,相比之下没有43MB,除非我终止这个过程,否则我永远不会回来.似乎问题与发送的连接数量密切相关,而不是发送的消息.
消费似乎独立于客户端(我编写了自己的客户端并尝试了其他客户端).
安全的websockets真的比普通的websockets更加内存密集吗?或者我的服务器代码没有正确实现它?
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |