2011-11-15 114 views
4

我想限制子進程寫太多的數據或佔用太多CPU時間(無限循環)。在C中,我會調用setrlimit(2)來做到這一點。在node.js中是否有這樣的東西?我可以從node.js設置ulimit嗎?

回答

20

據我所知,沒有提供setrlimit()功能node.js的擴展名,但可以解決限制用小貝殼解決辦法破解:

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

貌似核心,Node.js就會從來沒有setrlimit()現在,它支持Windows,不再僅POSIX的框架:https://github.com/joyent/node/pull/2143

更新:我轉換的節點拒絕補丁到一個單獨的posix擴展模塊現在是在可用和Github

+0

我從來沒有想過缺少POSIX支持,由於便攜性。現在你說出來了,看起來這很有道理。我會嘗試你的模塊。根據手冊頁 – topskip

+0

ulimit已被棄用,所以你堅持使用rlimit。 – einarc

1

我不認爲有任何內置的方法。但是,您可以偶爾使用process.memoryUsage()檢查進程的內存使用情況並手動終止進程。

或者,如果您知道預計運行多長時間,則可以按照說明here指定超時。

相關問題