我正在开发一个 Web 应用程序,用户可以在其中上传视频文件。视频文件很快就会变大,为了避免服务器超时,我决定将文件拆分成许多 3MB 的小包,然后上传,然后在服务器上重新组装文件。这是通过 AJAX 和 PHP 完成的,效果很好。我将文件转换为二进制文件,然后逐个上传到服务器,完成后我告诉服务器重新组装,完成后服务器会将完成文件的路径返回给我。我尝试使用 png 文件和视频,并测试了不同的数据包大小。我还添加了这个简洁的小显示屏,它会根据每个包所需的时间以及完成所需的时间告诉您当前的上传速度。
现在事情开始变得疯狂:有时我的上传速度会非常慢(通常为 0.5MB/s - 那些时候我为 0.01MB/s),即使我的连接上没有其他上传或下载。我必须重试几次才能再次正常工作。其他时候,它可以很好地上传前几个数据包,然后突然以每秒 3 个数据包的速度上传其余数据包。看起来好像我的上传速度快得惊人,但我的服务器却什么也没有到达 - 事实上,视频文件会以数据包丢失的相同百分比停止播放。
这似乎是我的本地连接的问题,因为我在其他计算机上没有遇到问题(尽管我只能尝试几次)。
我请了 ISP 上门维修,他们更新了一些线路并给了我一个新的路由器,但问题并没有得到解决。这种情况发生在两台不同的电脑上,两台电脑都使用有线连接。
当我运行 traceroute 时,我的网络主机商说是我的 ISP 的问题,因为有几个“请求超时”响应。在更换路由器之前,到 google 的 traceroute 导致 9 个请求中有 7 个失败,现在只有 2 或 3 个失败。在更换调制解调器之前和之后,我的服务器有 2 个请求被丢弃。
发送最大允许大小为 65500 字节的 ping 请求总是会导致超时,无论是对 Google 还是对我的服务器。常规 ping 请求可以正常工作。
速度测试准确显示了我应该得到的结果。
我接下来该怎么做才能解决这个问题?什么原因会导致这些问题?为什么它会丢弃上传,但仍然给我一个有效的服务器响应?为什么我的 ISP 认为我的连接很好,而我却遇到了这么大的问题?这个问题相当间歇性,所以我真的不能向他们展示任何东西。
编辑:
根据建议,我进行了路径测试,然后决定将所有其他结果发布在这里。希望我没有留下任何未经审查的内容,以免受到攻击 :D
所有这些测试都是在美国东部时间凌晨 4 点到 5 点之间进行的 - 因此应该不会有太多其他流量。