NodeJs的Redis客户端遇到failed - connect EMFILE问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

NodeJs的Redis客户端遇到failed - connect EMFILE问题

2016-02-28 14:59:31 3313 1

程序很简单,就是得到http请求后,用一个参数作为Key去blpop一个Redis实例,如果超时就关掉Redis客户端返回空字典的json,如果超时前得到了push的数据就返回数据,最后关掉Redis连接。
结果在Redis用info得到connected client数量才2000多的时候,Nodejs的redis客户端就开始连接出错,然后报
error:Error: Redis connection to xxx.xxx.xxx.xxx - connect EMFILE
events.js:72
throw er; // Unhandled 'error' event
^
Error: Redis connection to xxx.xxx.xxx.xxx:6379 failed - connect EMFILE
at RedisClient.on_error (/var/www/ncodoon/message/broker/node_modules/redis/index.js:185:24)
at Socket. (/var/www/ncodoon/message/broker/node_modules/redis/index.js:95:14)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:440:14
at process._tickCallback (node.js:415:13)
Redis所在服务器的ulimit -n 是102400,Nodejs所在服务器的也是这个数。离限制还早得很呢。所以叫改ulimit的可以退散了。

取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:49:38

    EMFILE 就是打开的文件过多的意思。
    执行 ulimit 命令之后,只对其子进程有效。要对系统全局生效,需要配置 /etc/sysctl.conf 文件(并执行 sysctl -p 加载之)。当然使用 sysctl 命令直接修改也是可以的。
    你可以通过阅读 /proc//limits 文件来取得指定进程的资源限制设置,以确定你的设置是否已确实对该进程生效。

    0 0
相关问答

1

回答

客户端连接redis做聊天信息的广播

2016-02-19 15:43:27 1932浏览量 回答数 1

1

回答

Redis集群版 – 不支持哪些命令?

2021-12-24 08:55:38 194浏览量 回答数 1

1

回答

Redis集群模式如何选型?

2021-12-24 08:56:00 950浏览量 回答数 1

1

回答

Redis集群架构有哪些?

2021-12-23 20:10:04 115浏览量 回答数 1

1

回答

Redis集群架构分为哪几大类?

2021-12-23 20:11:25 137浏览量 回答数 1

1

回答

开源Redis集群如何实现?

2021-12-24 09:04:00 117浏览量 回答数 1

1

回答

开源Redis集群实现细节是什么?

2021-12-24 09:04:37 125浏览量 回答数 1

1

回答

开源Redis集群实现优点是什么?

2021-12-24 09:05:01 126浏览量 回答数 1

1

回答

我已有一个基于普通内存的Redis应用集群,想将业务迁移到持久内存型实例我应该怎么做?需要注意啥?

2021-12-19 12:47:06 336浏览量 回答数 1

1

回答

Redis集群为什么要使用主从复制模型?

2021-12-12 16:07:49 429浏览量 回答数 1
+关注
落地花开啦
喜欢技术,喜欢努力的人
文章
问答
问答排行榜
最热
最新
相关电子书
更多
Redis Cluster的基本原理
立即下载
Substitution failure
立即下载
Redis多线程性能优化
立即下载