node.js http请求在5次请求后锁定
node.js http request lock-up after 5 requests
我有一些非常简单的代码,如下所示:
var http = require('http');
var options = {
hostname: 'google.com',
port: 80,
path: '/'
};
function makeRequest() {
http.get(options, function(res) {
console.log('Got response code: ', res.statusCode);
process.nextTick(makeRequest);
}).on('error', function(err) {
console.error('Got error: ', err);
throw err;
});
}
makeRequest();
并且在5次请求之后,它锁定并停止工作。样本输出:
Got response code: 200
Got response code: 200
Got response code: 200
Got response code: 200
Got response code: 200
Got error: { [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
查看hyperquest自述,它准确地解释了这里发生的事情,@substack为什么讨厌它,以及hyperquest如何避免它。
默认情况下,客户端连接被池化,空闲超时时间为2分钟,默认最大池大小为5。
如果您不打算重用实例化的代理,您应该在使用它之后调用destroy()方法,避免在池中保持空闲连接。示例:
var req = http.request({path: "/", host: "google.com",method: "HEAD"})
req.end();
req.on("response",function(res) {
//do something
// ....
req.destroy();
//do other things
});
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- node.js http请求在5次请求后锁定
- 为什么我的页面在执行 ajax 请求时锁定
- Jquery:Ajax 请求看起来是同步的,锁定浏览器
- 异步ajax请求锁定浏览器
- 同步Ajax请求”;锁定“;浏览器
- 在不锁定浏览器的情况下,将大数据JSON从REST请求反序列化为对象