【问题标题】:Can I set ulimit from node.js?我可以从 node.js 设置 ulimit 吗?
【发布时间】:2011-11-15 18:13:16
【问题描述】:

我想限制子进程写入过多数据或占用过多 CPU 时间(无限循环)。在 C 语言中,我会调用 setrlimit(2) 来做到这一点。 node.js中有这样的东西吗?

【问题讨论】:

    标签: node.js ulimit


    【解决方案1】:

    据我所知,没有提供 setrlimit() 功能的 node.js 扩展,但您可以通过一个小的 shell 变通方法破解该限制:

    /bin/sh -c "ulimit -t 100; exec /usr/bin/node /my/node/program.js"
    

    看起来核心 node.js 将永远不会有 setrlimit(),因为它支持 Windows 并且不再是 POSIX-only 框架:https://github.com/joyent/node/pull/2143

    更新:我将被拒绝的 Node 补丁转换为单独的 posix 扩展模块,现在可以在 NPMGithub 中使用。

    【讨论】:

    • 我从没想过由于可移植性而缺乏对posix的支持。既然你说出来了,好像说的很有道理。我会试试你的模块。
    • 根据手册页 ulimit 已被弃用,因此您只能使用 rlimit。
    【解决方案2】:

    我认为这个新发布的模块正是您想要的:https://github.com/melor/node-posix

    【讨论】:

      【解决方案3】:

      我认为没有任何内置方法。但是,您偶尔可以使用process.memoryUsage() 检查某个进程的内存使用情况并手动终止该进程。

      或者,如果您知道预计运行多长时间,您可以指定超时时间,如here 所述。

      【讨论】:

        猜你喜欢
        • 2019-03-28
        • 1970-01-01
        • 2014-10-18
        • 2019-08-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        • 2013-12-04
        • 1970-01-01
        相关资源
        最近更新 更多