首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长轮询有连接限制吗?

长轮询有连接限制吗?
EN

Stack Overflow用户
提问于 2012-05-02 23:42:54
回答 2查看 1.8K关注 0票数 1

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

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

提前谢谢你,

EN

回答 2

Stack Overflow用户

发布于 2012-05-03 15:20:29

不需要特殊的配置,这只是服务器上的CPU/RAM加上处理控制器调用需要多长时间的问题(有多少请求到数据库,等等)。

因为Play是无状态的,如果你超时了,只需尝试在负载均衡器后面添加第二个服务器,这应该可以解决问题。

注释上的编辑:

你遇到的主要问题是Play需要很长时间才能将事件传播给300个用户。这在某种程度上是意料之中的,因为聊天示例使用内存中的系统进行传播,按顺序将消息传递给每个订阅者。

聊天方法还有另一种方法:如果使用第二个服务器,消息将不会在它们之间共享,因为ArchivedEventStream本地存储在Play instance JVM中。

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

票数 0
EN

Stack Overflow用户

发布于 2012-05-05 23:36:48

这听起来并不像你在你的播放服务器上达到长轮询的连接限制。相反,您可能会遇到某种形式的瓶颈,这会导致响应时间降低。

一种很大的可能性是,您在执行JMeter测试的机器上达到了限制,如果您在图形用户界面模式下运行,这种可能性会增加。您可以通过使用多台机器重复测试来验证是否是这种情况,只需在两台机器上同时执行相同的测试,如果它们都显示了与只运行一个测试时相同的结果,那么很明显,问题不是您的Play服务器,而是测试本身。但是,如果您在运行两个测试时看到更糟糕的结果,那么问题出在您的服务器上。记住使用加速时间,这将有助于识别事情开始减速的点,这对调优很有用。

如果你达到了JMeter限制,那么尝试从命令行运行,这会更有效,或者,如果你真的想要界面,那么尝试使用更少的侦听器,这些都是导致问题的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10417131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档