Node.JS请求模块 - 错误:连接EMFILE

时间:2014-02-14 18:23:53

标签: javascript linux node.js ubuntu amazon-ec2

我在Ubuntu机器上运行此错误,同时在Request模块中执行GET操作并写入MongoHQ存储。

我的错误是:

{ [Error: connect EMFILE] stack: 'Error: connect EMFILE\n at exports._errnoException (util.js:682:11)\n at connect (net.js:813:19)\n at net.js:897:9\n at Object.asyncCallback [as callback] (dns.js:78:16)\n at Object.onlookup [as oncomplete] (dns.js:94:10)', code: 'EMFILE', errno: 'EMFILE', syscall: 'connect' }

我见过这个解决方案:

How do I change the number of open files limit in Linux?

我通过修改我的ulimit值来遵循规定的解决方案,以便我的ulimit -a输出为:

4096

我还从此链接更改了我的limits.conf文件:

https://askubuntu.com/questions/162229/how-do-i-increase-the-open-files-limit-for-a-non-root-user

我添加了这些内容:

  • soft nofile 4096
  • hard nofile 4096

我仍然有同样的问题。

但是我确实有另一个ubuntu机箱,内存和存储运行较少(也是)在没有此问题的Amazon EC2实例上运行。我没有对这个盒子做任何改动,唯一的区别是它运行精确的12.04.2 LTS而我的问题机器运行的是精确的12.04.3 LTS。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我相信你是一个正确的轨道。我还有一个EMFILE错误,最终解决了这个错误是将这些行添加到我的 /etc/security/limits.conf

*                soft    nofile          100000
*                hard    nofile          1000000
root             soft    nofile          100000
root             hard    nofile          1000000

然后我重新启动,我不再有问题。 '*'表示所有非root用户,因此无论用户运行此程序是什么,这基本上都是一个捕获。据我所知,ulimit直到用户重新登录后才会改变,因此您可能必须终止进程并注销,然后重新登录....这可能是为什么重启对我有用! / p>