【问题标题】:Can uploads be too fast?上传速度会不会太快?
【发布时间】:2012-08-06 09:14:17
【问题描述】:

我不确定这是否适合问这个问题,但无论如何我都会这样做。

我为 Umbraco CMS 开发了一个上传器,可以让人们一次性上传一系列文件。这使用了一些简单的 Flash 应用程序,它只调用一个 .NET ashx 来一次上传一个文件。一个完成后,下一个开始。

最近我有一个用户遇到了一个问题,即 1 或 2 次上传会正常,但其余的都失败了。这发生在他自己和他的客户身上。经过一番调试,他认为他找到了问题,但这似乎很奇怪,所以想知道是否其他人也遇到过这个问题?

他和他的客户都使用光纤宽带连接,因此上传速度非常快。当它在较低速度的宽带连接上进行测试时,所有文件上传都没有问题。据他的一位开发者朋友说,显然他们之前遇到过这种情况,因此不得不稍微延迟上传脚本才能使其正常工作。

这听起来可能吗?有没有其他人遇到过这个问题?是否有防止上传失败的已知解决方法?

【问题讨论】:

    标签: asp.net uploading broadband


    【解决方案1】:

    我之前没有遇到过这个精确的问题,但是我之前做过很多DSL的诊断和宽带故障排除,所以会尽力回答这个问题。

    此特定症状有 2 个可能的原因,通常都超出了您的网络控制范围(我原以为)。

    1) 丢包 当然,如果某些链接接收到非常大的流量,那么它们可以选择只转储大量数据(例如,超过该链接最大设置大小的所有数据),但 TCP/IP 应该控制它,并且也期望这种类型不时掉落的东西,所以这似乎不太可能。

    2) 接收服务器 该服务器甚至接收服务器 CPU / RAM 等可能存在一些 HTTP 瓶颈,可能已满负荷。

    从故障排除的角度来看,即使这些症状(理论上)不应该存在,但它们确实存在,并且您有特定的

    如果您真的需要了解它是如何工作的,接下来的步骤可能是获取某种数据包嗅探器(如 WireShark),以尝试在数据包级别找出到底发生了什么。

    此外,套接字编程通常可以直接编程到 TCP/IP 套接字,因此您将在较低的网络层进行处理,并查看响应和超时等。

    此外,如果您控制接收服务器,那么您可以从那一端执行相同的操作,或者至少查看错误日志以查看引发的问题。

    如果可能的话,一个非常基本的方法可能是向接收服务器发送路径,这可能会突出显示缓慢的节点获取服务器,或本地计算机和终端服务器之间的数据包丢失。

    结果?在上传代码中加入一个减速功能,这至少应该使代码工作。

    如果您需要对 WireShark 进行任何分析,请与我们联系。

    【讨论】:

      【解决方案2】:

      我在使用 Flash 上传器和 Firefox 的 MVC2 网站上遇到了类似的问题。服务器使用 Big-IP 负载平衡器进行负载平衡。我们在调试中发现,在 Firefox 中,Flash 没有在继续请求中发送会话 ID,负载均衡器会将继续请求发送到另一台服务器。因为用户在新服务器上没有会话,所以请求失败。

      如果一个文件可以在一个块中发送,它会很好地上传。如果它需要第二个块,它就失败了。因此,上传文件数量不确定后,上传会失败。

      为了解决这个问题,我编写了一个 Silverlight 上传器。

      【讨论】:

        猜你喜欢
        • 2019-01-25
        • 2020-04-08
        • 2014-12-21
        • 1970-01-01
        • 2016-07-06
        • 2023-04-03
        • 2020-12-13
        • 1970-01-01
        • 2016-12-15
        相关资源
        最近更新 更多