2011-04-05 49 views
2

tl; dr:将轮询间隔设置为0已经给我的表现带来了巨大的提升,但我担心可能出现的问题。BlazeDS轮询间隔设置为0:不需要的副作用?

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

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

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

所以,我对目前的表现感到非常满意,唯一的问题是,我对这种变化引起的意外副作用感到有点紧张。特别是,我担心我们的Flash客户端放缓速度,以及太多不必要的流量。

我的初步测试还没有证实这种恐惧,但在此之前我提交变化给我们的资料库,我希望有人与经验,用这个东西会插入内容。

回答

1

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

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

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

主要思想是你应该对某些API做一些性能测试并保存脚本以便查看你的未来修改正在放慢系统太多。没有这个,很难猜测它是否可以改变配置参数。

+0

我很清楚我的问题是相当普遍的,我也非常感谢你给我几件事情要考虑。 – biggusjimmus 2011-04-05 20:37:34

1

您可能想要尝试长轮询。对于我们的Weblogic服务器,除非我们让轮询请求持续5分钟,否则我们不会遇到任何问题,所以我们将它保持为4,然后在重新开始之前给它1秒的休息时间。我们有几百个用户,全天用60-70个硬核。需要记住的是,你基本上把间歇性的用户请求变成几乎总是连接的telnet会话。取决于用户使用的浏览器,它也可能会带来影响,但总的来说,我们一直非常高兴。