我有一个python Twisted SSLServer,它接受来自100个不同外部客户端的100个持久连接的SSL编码消息。每个客户端都通过自己的SSLClient反应器发送消息。每个客户端通过其与服务器的持久套接字连接每秒推送大约20条小“消息”。问题是某些客户端遇到这样的情况,即在5-10分钟之后服务器不会收到并发送其中一条消息。
消息以交错的方式从客户端发送(即,并非所有消息都在每分钟的0秒内完成,但在该分钟内随机分布)。此外,当客户端从LoopingCall内部发送这些方法时,它确实将callFromThread中的发送消息(sendLine)方法包装起来,以便从客户端的反应器线程发送它们。
我对Twisted的理解是,它接收每条消息并将其放入队列中,先到先服务,然后按顺序处理每条消息。从我们的日志文件中看,它们看起来不像我们在服务器上的任何消息处理程序都在阻塞或花费很多时间,但似乎有很多它们。
所以我的问题是,有没有办法让Twisted在给定的时间内处理大量的事件?有什么比增加线程池大小的吗?还有其他想法吗?
我们的机器相当强大(双处理器Xeon,每个4核,32GB RAM),所以我很惊讶我们看到了这个问题。我猜我们正在使用Twisted服务器设置做一些不太正确的事情。