【发布时间】:2017-07-21 05:14:33
【问题描述】:
我收到以下错误。
Error: Redis connection to localhost:6379 failed - getaddrinfo EMFILE localhost:6379
at Object.exports._errnoException (util.js:870:11)
at errnoException (dns.js:32:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26)
使用了带有 MySQL db 和 redis 概念的 Node.js。 从 MySQL 获取数据的请求太多,因此通过与 db 同步将数据缓存 2 分钟。因此,当新请求到达时,它会检查 redis 是否从 redis 中找到它的服务,否则会从 MySQL 检索数据并缓存在 redis 中并作为响应发送。这种情况一直在发生。
大约 1 小时或 2 小时后,服务器崩溃导致上述错误。 但截至目前,使用 pm2 重新启动服务器。
但需要知道它的原因。
Redis 安装按照此处的说明进行。 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis
请告诉我如何解决这个问题...
Redis 连接文件代码
var Promise = require('bluebird');
var redisClient; // Global (Avoids Duplicate Connections)
module.exports =
{
OpenRedisConnection : function()
{
if (redisClient == null)
{
redisClient = require("redis").createClient(6379, 'localhost');
redisClient.selected_db = 1;
}
},
GetRedisMultiConnection: function ()
{
return require("redis").createClient(6379, 'localhost').multi();
},
IsRedisConnectionOpened : function()
{
if (redisClient && redisClient.connected == true)
{
return true;
}
else
{
if(!redisClient)
redisClient.end(); // End and open once more
module.exports.OpenRedisConnection();
return true;
}
}
};
【问题讨论】:
-
这不是 MySQL 问题。请只标记相关的东西。
-
对不起@tadman 标记mysql
-
看起来你的 Redis 服务器已经死了。你能戳它看看它是不是还活着吗?
-
我已将它的快照放在问题中。重新启动后它可以正常工作,但在 1 或 2 小时后再次崩溃,并且不断重复。
-
实际上它只是关于快照中redis的信息。但是根据您的问题,我尝试了 redis-cli 然后我能够运行有效的 redis 命令。