长轮询是否有连接限制?

时间:2012-05-02 15:42:54

标签: playframework jmeter long-polling playframework-1.x

我正在使用长轮询开发Play 1.2.4应用程序,类似于聊天示例。 我一直在使用JMeter进行负载测试,当我有超过300个监听器时,我的服务器需要超过4秒的时间来回答,这对我的需求来说太多了,或者听众从未收到答案。 我需要在不到一秒的时间内得到所有回复。

长轮询是否有连接限制? 我需要特殊配置或服务器吗?

提前致谢,

2 个答案:

答案 0 :(得分:0)

不需要特殊配置,只需要服务器上的CPU / RAM以及处理控制器调用需要多长时间(对DB有多少请求等)。

由于Play是无状态的,如果您正在获得超时,只需尝试在负载均衡器后面添加第二台服务器即可解决问题。

修改评论

您遇到的主要问题是Play需要很长时间才能将事件传播给300个用户。这是预期的,因为Chat示例使用内存系统进行传播,将消息顺序传递给每个订阅者。

还有另一种使用Chat方法:如果您要使用第二台服务器,则不会在它们之间共享消息,因为ArchivedEventStream本地存储在Play实例JVM中。

如果您想获得更高的性能,则需要将发布/订阅步骤移动到外部Message Queue工具,例如Redis。这样做的好处是可以添加额外的实例,同时在它们之间共享相同的消息。

答案 1 :(得分:0)

听起来您的Play服务器上的长轮询没有达到连接限制。相反,您可能会遇到某种形式的瓶颈,导致响应时间降低。

很有可能是您正在对正在执行JMeter测试的计算机达到限制,如果您在GUI模式下运行,则可能会增加。您可以通过使用多台计算机重复测试来验证是否是这种情况,只需在两台计算机上同时执行相同的测试,如果它们都显示相同的结果,则只运行一个测试然后逻辑上问题是不是你的Play服务器而是测试本身。但是,如果在运行两个测试时看到更差的结果,则问题出在您的服务器上。请记住使用加速时间,这将有助于确定事情开始减慢的点,这对调整很有用。

如果达到JMeter限制,那么尝试从命令行运行,这样效率更高,或者,如果你真的想要接口,那么尝试使用较少的监听器,这些都会导致问题。