Node.js 服务器 GET 到单独的 API 在使用几个小时后失败

标签 node.js request coffeescript express

在我的 Node 站点中,我调用了一个使用标准 http get 构建的 Restful API 服务。经过几个小时的通信成功工作后,我发现请求停止发送,它只是等待并最终超时。

正在调用的 API 仍然可以很好地接收来自其他地方的请求,但是当从站点发送请求时,它不会到达 API。

我尝试过使用stream.pipe、util.pump并将文件写入文件系统。

我使用的是 Node 0.6.15。我的站点和正在调用的服务位于同一服务器上,因此正在调用本地主机。内存使用率约为 25%,CPU 平均使用率约为 10%。

问题出现一段时间后,我开始使用 request模块,但我得到相同的行为。它在失败之前进行的调用次数似乎在 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);
    });
  });
}

我对可能发生的事情很了解。

最佳答案

您是否尝试增加agent.maxSockets,或禁用http.Agent功能?默认情况下,最新的 Node 版本使用套接字池进行 HTTP 客户端连接,这可能是问题的根源 http://nodejs.org/api/http.html#http_class_http_agent

关于Node.js 服务器 GET 到单独的 API 在使用几个小时后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253529/

相关文章:

javascript - 我如何在 Node.js 中获取这个人的 IP 地址?

swift - 在ios中的mapbox导航期间执行post请求

node.js - Swagger UI 不发送 url 参数

javascript - 将 jWebSockets channel 插件与 node.js 结合使用

node.js - 使用nodejs每1小时调度一次文件

excel - NODE.JS: fatal error - JS 分配失败 - 进程内存不足,同时解析大型 excel 文件

javascript - 我可以在一个路由中多次使用 npm request 并将结果显示在同一页面上吗?

快速 cookies urlsession 请求

node.js - 分析 mongoose 方法

node.js - SocketIO 断开连接并留下套接字监听