【发布时间】:2013-03-02 16:15:45
【问题描述】:
我为我的用户提供了一种使用 JavaScript 转换数据的灵活方法,在服务器端使用 Node.js 执行。采用这种设计,需要考虑 3 个问题:
安全性:我使用sandbox 解决了安全问题,以避免使用本机 Node.js 库。
资源:我们可以使用 v8 选项
--max_executable_size轻松设置最大内存使用量。关于CPU使用率,我看看怎么用cpulimit或者renice来管理,现在无所谓了。时间:我需要限制脚本的执行时间,以避免它们像僵尸一样运行。我在这里卡住了。
我试过类似的东西:
node -e '
setTimeout(function() {
console.log("timeout");
process.exit;
}, 5000);
console.log("begin");
while (1);
'
但是这段代码只显示“开始”,似乎我的超时从未被调用。 有什么想法吗?
【问题讨论】:
-
这些是你的脚本吗?或者您是否试图限制任意代码的执行?您是否尝试为整个应用程序设置时间限制?还是里面的一大段代码?
-
我想限制其中一段代码的执行。
-
你的“while(1);”正在阻止执行,删除它,你会看到开始和超时。
-
我的用户可能会使用这个
while(1)。我在一个不好的用例中选择了我的例子,需要限制的用例:-)。 -
为什么你也不能使用沙盒模块呢?如果您查看source code,您可以看到您可以为子进程提供超时选项