在我的节点站点中,我调用了一个使用标准 http get 构建的 RESTful API 服务。在成功进行了几个小时的通信后,我发现请求停止发送,它只是等待并最终超时。
被调用的 API 仍然可以很好地接收来自其他地方的请求,但是当从站点发送请求时,它不会到达 API。
我尝试过使用 stream.pipe、util.pump 并将文件写入文件系统。
我正在使用节点 0.6.15。我的站点和被调用的服务位于同一台服务器上,因此正在调用 localhost。内存使用率约为 25%,cpu 平均使用率约为 10%。
经过一段时间的问题,我开始使用请求模块,但我得到了相同的行为。它在失败之前发出的调用次数似乎在 5 到 100 之间。最后我必须重新启动站点,而不是重新启动 api 才能使其再次工作。
网站中的代码大致如下所示:
var Request = require('request');
downloadPDF: function(req, res) {
Project.findById(req.params.Project_id, function(err, project) {
project.findDoc(req.params.doc_id ,function(err, doc) {
var pdfileName;
pdfileName = doc.name + ".pdf";
res.contentType(pdfileName);
res.header('Content-Disposition', "filename=" + pdfileName);
Request("http://localhost:3001/" + project._id).pipe(res);
});
});
}
我很了解可能发生的事情。