0

我编写了一些在 node.js 下运行的 JavaScript 代码,用于将一个大 (~20 MB) 文件备份到 Azure blob。这在从 bash shell 运行时有效,但在作为 cron 作业运行时失败并出现以下错误(在两种上下文中以 root 身份运行):

致命错误:v8::Context::New() V8 不再可用

大概这意味着它耗尽了堆空间,但是为 cron 作业设置的限制在哪里?

(这是在 64 位 RHEL 6.2 服务器上,具有 8GB RAM 和 426 GB 可用磁盘空间。Node.js 版本为 0.8.1,Azure 来自文件 azure-2012-06.tar.gz。)

谢谢基思

4

1 回答 1

0

当您说大时,您真的是指〜20MB作为大文件吗?您的 cron 作业在返回 OOM 之前运行了多长时间?此外,当您运行 cron 作业时,您是否检查了内存使用情况以验证实际使用情况是否是原因。

关于 cron 作业中的内存/堆限制,cron 只是充当作业调度引擎,因此 node.js 仍然使用自己的内存/堆设置,这不应该特定于 cron 调度程序。如果要更改/修改 V8 内存,可以使用 --max-old-space-size 选项将其提升到更高的值。

我很想知道您如何将 node.js 代码作为 cron 作业运行。您编写 cron 作业的方式可能会在调用 Azure 存储时消耗大量内存。

于 2012-07-02T22:28:54.130 回答