我想测试我的redis服务器可以容纳多少个连接,所以我在一个循环中调用redis.createClient(),而redis服务器仍然运行活跃,我得到了EMFILE错误,我知道我已经使用了我的fds。使用nodejs redis时出现EMFILE错误
但是等等,我刚才测试了我的mqtt服务器,我对我的mqtt服务器做了同样的事情, 我在10000,20000的循环中调用了mqtt.createClient()...但是我从来没有EMFILE错误。
那么,nodejs mqtt库在下面使用不同的机制?
redis的-client.js:
var redis = require('redis');
function start() {
var client = redis.createClient();
client.on('error', function(err) {
console.log('Error ' + err);
});
}
exports.start = start;
redis的-test.js
var redis_client = require('./redis-client');
for(var i = 0 ; i < 10000 ; ++i) {
redis_client.start();
console.log('redis client ' + i + ' started');
}
MQTT-subclient.js
var mqtt = require('mqtt');
function start() {
var client = mqtt.createClient();
client.subscribe('message');
//client.publish('message', 'hello me!');
client.on('message', function(topic, message) {
console.log('receive message: ');
console.log(message);
});
client.on('connack', function(packet) {
console.log(packet);
if(packet.returnCode == 0) {
console.log('connect successfully');
}
});
client.on('suback', function(packet) {
console.log(packet.messageId);
});
client.on('error', function(err) {
console.log(err);
});
}
exports.start = start;
MQTT-test.js
var subclient = require('./mqtt-subclient.js');
for(var i = 0 ; i < 10000 ; ++i) {
subclient.start();
console.log('client ' + i + ' started');
}
你能显示更多代码吗? – Raptor
@ShivanRaptor好吧,我附加了一些代码,你能帮忙吗? –
@Shivan猛禽好的,我附加了一些代码,你能帮忙吗? –