重复的http post请求被延迟

我试图通过发布请求上传一个.zip文件(〜180KB)作为八位字节stream。 以下代码按预期执行2-3次。 文件被上传,我得到了预期的回应。

但是,当第三次/第四次发布数据时,请求不会在上传服务器上显示一分钟左右。 当我等一会儿,我可以正常执行2-3次的请求,然后再次延迟。

两个服务器都运行在本地主机(OS X)上的节点(v0.10.31)+ express。

var options = { host : interface.host, port : interface.port, path : interface.path + '/deployResources', method : 'POST', headers : { 'Content-Type': 'application/octet-stream', 'Content-Length': byteLength, 'Content-disposition': 'attachment; filename=resources.zip' } }; var stream = fs.createReadStream(zipPath); var req = http.request(options, function (res) { // Response delayed on 3rd/4th run console.log(res.statusCode); }); stream.on('data', function (data) { req.write(data); }); stream.on('end', function () { console.log('STREAM END'); stream.close(); req.end(); }); 

从节点v0.10.32更改日志:

http:请勿在TE HEAD回复中发送0 \ r \ n \ r \ n(Fedor Indutny)

这可能是一个问题吗?

谢谢。

有时使用Http.Agent可能会导致这样的问题。 当您遇到这种行为时,您可以在请求选项中设置agent: false ,以便请求始终获得全新的networking连接。

如果您在很短的时间内发出很多请求,这样做可能并不总是可取的,因为这会导致您用尽可用的文件描述符(这正是Http.Agent旨在帮助您防止的原因)。 在这种情况下,您可以尝试仅增加agent.maxSockets