我目前正在运行nodejs服务器,并使用GazeboJS连接到Gazebo服务器以发送消息。
问题是: 从我的搜索看来它似乎是由于linux打开文件限制,默认为1024(使用Ubunuty 14.04)。大多数解决方案似乎是增加打开文件限制。
但是,我不知道为什么我的脚本会打开文件而不关闭它们。看起来每个http请求打开一个连接,即使发送了响应,该连接也没有关闭? http请求来自使用async的Lua脚本。
错误
getifaddres: Too many open files
恰好在1024个请求之后发生。
我没有网络服务器的经验,所以我希望有人能给出解释。
我正在运行的nodejs服务器的详细信息:
使用
创建服务器http.createServer(function(req, res))
当收到HTTP GET请求时,响应将作为字符串发送。一个回复的例子
gazebo.subscribe(obj.states[select].type, obj.states[select].topic, function(err, msg) // msg is a JSON object
{
if (err)
{
console.log('Error: ' + err);
return;
}
res.setHeader('Content-Type', 'text/html');
res.end(JSON.stringify(msg));
gazebo.unsubscribe(obj.states[select].topic);
})
该脚本利用Gazebo服务器中的发布/订阅主题来提取信息或发布操作。有关Gazebo通信的更多信息是here。