BlazeDS Polling Interval设置为0:不需要的副作用?

时间:2011-04-05 01:53:55

标签: java flex blazeds publishing

tl; dr:将轮询间隔设置为0已经给我的表现带来了巨大的推动,但我担心可能出现问题。

在我的应用程序中,我正在从我们的java服务器到我们的Flex客户端进行大量的发布,发布各种主题和子主题。

最近,我们在整个系统范围内进行了一轮性能改进,并且消息传递层被证明是一个很大的瓶颈。

几分钟前,我发现设置< polling-interval-millis>我们的services-config.xml中的属性为0导致已发布的消息,即使它们有很多,也几乎立即被客户端识别,而不是使用3秒延迟作为polling-interval-millis的默认值,这显然产生了巨大的影响。

所以,我对当前的表现非常满意,唯一的问题是,我对这种变化导致的意外副作用感到有些紧张。特别是,我担心我们的Flash客户端会慢下来,而且会有太多不必要的流量。

我的初步测试并没有证明这种恐惧,但在我将更改提交到我们的存储库之前,我希望有这方面经验的人能够加入。

2 个答案:

答案 0 :(得分:1)

不幸的是,你的问题太笼统......没有办法得到具体答案。我会在下面写下一些想法,也许它们很有帮助。

将值从3减小到0意味着您以更快的速度接收新数据。如果您的Flex客户端使用此数据进行复杂计算,则可能会降低客户端速度或显示过时数据(这是一种已知模式,请参阅http://help.adobe.com/en_US/LiveCycleDataServicesES/3.1/Developing/WS3a1a89e415cd1e5d1a8a18fb122bdc0aad5-8000Update.html)。您需要了解数据的处理方式,并可能需要进行一些客户端基准测试。

此外,服务器必须处理更多请求,并且最好确定每秒可以处理的最大请求数。为此,您需要使用像Jmeter这样的工具来检测系统的最大容量,之后您可以进行一些计算,试图确定在将间隔从3减少到3之后每秒会有多少请求0,考虑到客户数量每月增加10%等等。

主要思想是你应该对某些API进行一些性能测试并保存脚本,以便查看你未来的修改是否会使系统过于缓慢。没有这个,很难猜测是否可以改变配置参数。

答案 1 :(得分:1)

您可能想尝试长轮询。对于我们的Weblogic服务器,除非我们将轮询请求发送到5分钟,否则我们不会遇到任何问题,因此我们将其保持为4,然后在重新启动之前给它1秒的休息时间。我们总共有几百个用户,整天都是60-70硬核。要记住的是,您基本上将间歇性用户请求转变为几乎总是连接的telnet会话。根据您的用户使用的浏览器,它也会产生影响,但总体而言我们非常满意。