【问题标题】:Node Agenda Scheduler Mongo errno: 20, code: 'EMFILE'节点议程调度程序 Mongo errno:20,代码:'EMFILE'
【发布时间】:2015-05-14 09:16:17
【问题描述】:

我正在使用议程运行节点调度程序。它运行了大约 30 分钟,然后开始显示此错误。

{ [Error: EMFILE, open 'log/scheduler.log'] errno: 20, code: 'EMFILE', path: 'log/scheduler.log' }
{ [Error: EMFILE, open 'log/scheduler.log'] errno: 20, code: 'EMFILE', path: 'log/scheduler.log' }
[Error: failed to connect to [localhost:27017]]
[Error: failed to connect to [localhost:27017]]
[Error: failed to connect to [localhost:27017]]
[Error: failed to connect to [localhost:27017]]
[Error: failed to connect to [localhost:27017]]

我正在使用 node js 和部署在 EC2 实例上的 mongo db。

我写的代码在这里:

https://github.com/kelvinblade/bluesky-scheduler2

任何帮助将不胜感激。

【问题讨论】:

    标签: node.js mongodb amazon-ec2 scheduler


    【解决方案1】:

    EMFILE 当打开的文件描述符过多时会发生,因为操作系统对进程打开的描述符数量有限制。 您可以通过编辑此文件来重置此限制 /etc/sysctl.conf 或者更优雅的方法是使用一些模块,它会小心并有一个连接池来监视打开的文件描述符。 您可以尝试 node-graceful-fs 或 filequeue Git源码:

     https://github.com/isaacs/node-graceful-fs
    
     https://github.com/treygriffith/filequeue.git 
    

    通过

    安装合适的节点模块
         npm install node-graceful-fs
           or
         npm install filequeue
    

    并将您的 fs 从默认替换为

      var fs = require('graceful-fs')
        or
      var fs = new FileQueue(100);
    

    我个人觉得filequeue是更好的排队系统。

    【讨论】:

    • 我注释掉了写入日志部分,我仍然得到 [错误:连接关闭],我试着把 db.close();但是调度程序根本没有运行
    • 嗨 shinon 我已经在我的系统中设置了一个本地 mongo 并运行了你的代码。它在填充agenJobs 集合的情况下工作正常。你能检查一下你的 localmongo 是否启动并运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2014-08-08
    • 2023-03-18
    • 2017-05-14
    相关资源
    最近更新 更多