这可能超出了 Node.js 可以控制的范围,但也欢迎任何指向此问题的其他解决方案的指针。
我正在通过 HTTP POST 将大文件上传到 Node.js 服务。当它在本地或 LAN 上运行时,服务器接收的 block 大小始终为 65536 字节并且上传速度很快。
当我将相同的文件上传到运行在远程服务器(谷歌云虚拟机,或 co-lo 的真实硬件)上的相同代码时,接收到的 block 在 1448-2869 字节之间,上传速度要慢得多(远低于连接的带宽限制)。
我不确定通过 WAN 连接发送较小块的决定是在哪里做出的,如果它是由客户端软件执行的计算(curl 和 node.js 客户端产生相同的结果),或者它是否是路由分割数据包的中间硬件,或完全不同的东西。
我想知道我是否可以做些什么来强制将更大的数据 block 传送到服务器,或者是否有一种替代方法可以克服与处理这些小数据 block 相关的服务器抖动?
最佳答案
经过大量实验并与网络工程师讨论后,问题的核心是当连接超出直接以太网链路时 MTU 大小施加的限制。
我的解决方案是修改应用程序以使用多个并发请求来基本上“填补由较小块的网络开销造成的空白”。结果是网络传输速度大大加快,但复杂性略有增加。
关于node.js - Node.js 可以强制更大的 POST 请求 block 大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31054689/