2009-11-26 76 views
2

我们有一个flex应用程序与我们的服务器进行通信。 flex应用程序会将很多HTTP请求(帖子和获取)发送到服务器,在很多情况下是并行的。Flex随机删除连接到服务器

我们一直注意到我们从flex应用程序中获得了许多断开的连接。

服务器根本没有看到任何失败的请求,并且没有加载。

我也怀疑flex可能是on-connection-drop,会自动重试POST或GET请求,导致我们的服务器接收到两次请求。

有没有人遇到过这种情况?

我该如何缓解这个问题?

+0

我们INB特别是使用: mx.rpc.http.HTTPService发帖的 和 mx.controls.Image.load(stringUrl)加载图像 和 flash.media.Sound.load(新的URLRequest( stringUrl)来加载音频 – Patrick 2009-11-26 02:05:29

+0

您是否有任何可复制的测试用例来复制该问题? – 2009-11-26 04:17:32

+0

不幸的是,我们一直在试图查看它何时发生的相似之处,但我们找不到共同的分母 – Patrick 2009-11-26 21:40:43

回答

1

我们有这样的问题,我们也找不到问题。搜索了很长时间后,我们发现我们的sqlserver被重载了(因为我们登录了许多信息到服务器)。现在我们登录到一个txt文件,一切正常。

我们的Flex应用程序是一个测试工具,350名考生(平均)同时参加考试。 webserver和sqlserver的负载非常高,因为每隔30秒就会将flex应用程序的状态保存到服务器(state =候选人正在处理的当前练习)。

我们没有任何问题,所以我猜你的问题不是flex应用程序。也许这是网络?

我们使用WebORB和amf远程调用。我们还有一个用于提取媒体的retrieveBlob.aspx处理程序。平均而言,当350名候选人开始会话时,会同时获取大约3500个媒体文件(通过服务器缓存)。在这种情况下,我们迄今没有任何问题。

我们实现的另一件事是一个后备系统,如果某个远程调用失败,flex将使用相同的参数再次调用它。如果再次失败,则向候选人显示一条错误消息,指出需要重新启动应用程序(并且完成恢复)。

Flex自动重试帖子或获取是我在应用程序中还没有看到的东西。

您正在使用哪台服务器? (我们使用Flex-Weborb-asp.net-sqlserver)。

+0

我们在一个Tomcat前面使用了一个Java hibernate应用程序到MySql数据库 - 但是我们在服务器端看不到任何失败的请求,没有排队,并且响应时间非常好。 – Patrick 2009-11-26 21:39:26

+0

另外,您的350个候选人是否与服务器在同一网络上?或者他们是否跨云? – Patrick 2009-11-26 21:42:39

+0

以及您使用何种方法加载音频和图像?mx.controls.Image.load stringUrl)和flash.media.Sound.load(新的URLRequest(stringUrl))? – Patrick 2009-11-26 22:40:23

2

我遇到过这个问题,因为没有坚持引用加载对象(URLLoader?),认为只要添加所有正确的事件监听器就足够了。它被垃圾收集并且无法完成。解决方案是将所有加载URLLoaders的文件保存在一个根目录集合中,如字典,并在完成时删除它们。

你的问题可能是相关的吗?

+0

它可能肯定是相关的......不仅仅是......我想听听更多的选择..谢谢堆,但肯定会看到这一点。 – Patrick 2009-11-26 01:43:17

+0

我们INB特别是使用: mx.rpc.http.HTTPService使邮政和 mx.controls.Image.load(stringUrl)加载图像和 flash.media.Sound.load(新的URLRequest(stringUrl )来加载音频 – Patrick 2009-11-26 02:06:13