网络开发:AT& T 3g上的“连接重置”错误,其他地方

时间:2011-08-31 12:09:05

标签: asp.net ipad 3g

我们为客户维护服务器端报告应用程序。在一个报告页面上,页面中间有几个繁重的数据库调用,导致页面需要5-10秒才能呈现。

问题:当通过AT& T 3G上的iPad访问该页面时,该页面成功加载了大约50%的时间。但是,有时,Mobile Safari会呈现页面的上半部分,然后出现“服务器连接被重置”错误。

背景资料

  1. 如果您将iPad从3G切换到稳固的宽带Wifi连接,该页面可以100%的时间工作
  2. 该页面在我的Verizon iPhone上通过3G 100%的时间工作
  3. 无论是设备还是浏览器 - PC,Mac,手机,iPad等,该页面都可以100%通过宽带工作。
  4. 页面不是特别重。所有资产的总重量为108 KB(未压缩的440 KB)
  5. 即使通过AT& T 3G,报告网站上的其他网页也会在100%的时间内正确加载。
  6. 最初,数据库通话时间为10 +秒,iPad + AT& T 3G问题在100%的时间内发生。一些简单的优化将调用降低到5-10秒,现在我们大约有50%的时间看到它。
  7. 服务器平台是IIS6
  8. 新信息在IIS的日志文件中,“失败”页面请求(导致Mobile Safari中出现“连接重置”错误的请求)看起来像普通的HTTP请求,结果代码为200 (成功)
  9. 新信息暂时看来,这个问题在iPad上的Opera Mini中不会发生。令人费解,因为它似乎是一个AT& T网络问题。我在这里说“暂时”,因为我们不能排除它。我们目前有一个实习生刷新Opera的页面,并注意到任何错误。 :)
  10. 新信息我们对5-10秒的数据库查询进行了一些快速优化。现在暂停更像是3-5秒而不是5-10秒。因此,Mobile Safari“连接重置”错误现在更像是10%的时间,而不是50%的时间。
  11. 所以现在我不知道该怎么想。如果这是一个网络问题,为什么Opera Mini工作而不是Mobile Safari给出相同的情况呢?但是......如果这是一个移动Safari问题,为什么Mobile Safari可以通过宽带+ Wifi连接正常工作?

    Mobile Safari是否根据宽带或wifi使用不同的超时设置?我不知道这是不是......它的作用与否。

    为了奖励赏金积分,我想我正在寻找专门解决以下一个或两个问题的答案(1)Mobile Safari是否根据当前活动网络连接的类型改变其超时设置(2) )AT& Ts代理服务器是否有某种已知的特定事物是抽搐和终止连接已经空闲了几秒钟?喜欢:“是的,他们将在4.25秒后终止空闲连接”

4 个答案:

答案 0 :(得分:3)

我认为简短的回答是3G数据连接不可靠。这部分取决于物理学 - 它永远不会像有线连接那样可靠 - 部分归结为运营商所玩的游戏。

几乎所有运营商似乎都使用具有不同程度破坏性的透明代理服务器。

我无法确定AT& T正在做什么,但我可以列出一些我从我的应用程序的客户(访问REST Web服务)中看到的东西:

  • 截断参数字符串
  • 长参数字符串上的500个错误
  • 随机503错误
  • 随机403错误
  • 以XML或文本形式返回错误的200返回代码(即无法区分Web服务和代理的错误而不尝试解析消息。当然,您不知道是什么消息的格式是)
  • 零星的连接速度
  • 部分下载(无错误)

很长一段时间以来,我认为这是我的代码中的一个潜在错误,但后来在沃达丰手机而不是O2上尝试了我的应用...

除非您在公司环境中并且可以承担一个特定的运营商,否则除了使您的代码更具弹性之外,您所做的事情并不多。我试图制作我的代码:

  • 更能容忍奇怪或意外错误
  • 缩短参数字符串(我不控制Web服务,所以这很难!)
  • 如果我收到太多错误(例如,请求每个请求中的记录更少),请“回拨”性能
  • 尽量不要强迫最终用户处理他们实际上无能为力的奇怪错误

我认为最后一点是最重要的一点,但不幸的是,100%的时间不可能完成。

答案 1 :(得分:1)

您应该阅读this文章,了解在通过AT& T的3G网络连接时遇到问题的原因。

关于Opera Mini ......好吧,Opera使用这种类似代理的技术通过自己的服务器传递所有数据,压缩它然后发送给你。这样可以减少来自&移动设备,因此 - 加载时间更快。

除了压缩输出和优化速度之外,没有什么可以做的 - 甚至用单个引号替换双引号(抱歉,我是PHP编码器,不知道ASP是否相同)感觉到这里。凭借今天的宽带连接 - 没有人真正关心这一点,但移动连接还不是那么先进,并且在优化技术方面有点让我们回到拨号调制解调器时代。

答案 2 :(得分:1)

我怀疑问题不在于Safari,而在于AT& T的3G路由器/代理。通过切换到HTTPS,我已经成功避免了类似的问题,这似乎阻止了AT& T的缓冲,并且有助于避免虚假连接重置。

我的猜测是,AT& T正在与他们的网络玩游戏以平衡负载或防止其他带宽问题,这可能因某些原因而与您的特定数据混淆。

答案 3 :(得分:0)

我建议批处理数据检索以返回记录子集,并使用连续滚动模式来提高页面的性能。通过连续滚动,当您向下滚动页面时,将加载新项目。我已经看到这种技术在类似的情况下成功使用了。

这篇文章解释了如何在ASP.NET中使用JavaScript合并连续滚动模式:

http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=371

这是另一个使用jQuery的好例子:

http://www.eggheadcafe.com/tutorials/aspnet/b8381915-06d9-4538-b4bb-5ac2a8e73f34/implementing-continuous-scrolling-ui-pattern-in-aspnet.aspx

希望这有帮助。