2012-08-09 115 views
2

我不确定这是否是问这个问题的正确位置,但我仍然会这样做。上传速度可能太快吗?

我已经开发了一把umbraco CMS上传程序,可以让人们上传文件的队列中一气呵成。这使用一些简单的Flash应用程序,只需调用一个.NET ashx来一次上传一个文件。一旦完成,下一个开始。

最近我有一个用户打了一个问题,即1个或2个载会罚款上去了,但那么剩下的失败。这发生在他自己和他的客户身上。经过一些调试之后,他认为他发现了这个问题,但这似乎很奇怪,所以想知道是否有其他人有这个问题?

他和他的客户是光纤宽带连接,因此已经得到非常快的上传速度上。当它在较低速度的宽带连接上测试时,所有文件上传都没有问题。据他的一位开发人员朋友称,显然他们之前遇到过这种情况,为了使其工作起来,必须略微延迟上传脚本。

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

回答

0

我以前没有达成这个精确的问题,但我以前做过很多DSL和宽带故障诊断的,所以会尽我所能来回答这个问题。

这有特定症状2个可能的原因,一般都以外的网络控制的(我还以为)。

1)数据包丢失 当然,当一些链路接收到大量的流量时,他们可以选择只丢弃大量数据(例如所有超过该链路的最大集合大小),但TCP/IP应该控制这一点,也期待这种事情不时下降,所以这似乎不太可能。

2)接收服务器 可能有一些到该服务器或甚至接收服务器的CPU/RAM等HTTP瓶颈,可能是在容量。

从故障排除的角度来看,即使这些症状不应该(理论上)的存在,他们做的事实,你有一个特定的

下一步,如果你真的需要了解它是如何工作的所有可能会得到某种数据包嗅探器(如WireShark)试图在数据包层次上研究究竟发生了什么。

另外Socket编程可以经常程序直接到TCP/IP套接字,所以你会在较低网络层来处理,并在看到的响应和超时等

此外,如果你控制接收服务器,然后你可以从这方面做同样的事情,或者至少查看错误日志,看看引发了什么问题。

一个非常基本的方法可能是一个的pathping发送到接收服务器,如果这是可能的,这可能突出慢节点让你的本地计算机和终端服务器之间的服务器或数据包丢失。

结果?在上传代码中放入一个缓慢的函数,至少应该让代码工作。

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

0

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

如果一个文件可以在一个块中发送,它会很好地上传。如果它需要第二个块,则失败。由于这个原因,在上传不确定数量的文件之后上传会失败。

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