Node.js NODEJ只有在永久、mon、upstart等模式下运行时内存不足

Node.js NODEJ只有在永久、mon、upstart等模式下运行时内存不足,node.js,upstart,forever,Node.js,Upstart,Forever,我有一个节点程序,我在执行nohup命令时已经测试了很多次&只要我通过节点-max_old_space_size=12000,它就不会遇到任何内存问题,因为我的进程最多可以使用几GB 现在,我尝试对forever、mon和upstart运行完全相同的命令,进程总是会失败,并出现致命错误:CodeRange::GetNextAllocationBlock Allocation failed-进程内存不足 你知道为什么会这样吗?我无法在它出现故障之前检查内存使用情况,但当它仅达到大约3gb的内存时,

我有一个节点程序,我在执行nohup命令时已经测试了很多次&只要我通过节点-max_old_space_size=12000,它就不会遇到任何内存问题,因为我的进程最多可以使用几GB

现在,我尝试对forever、mon和upstart运行完全相同的命令,进程总是会失败,并出现致命错误:CodeRange::GetNextAllocationBlock Allocation failed-进程内存不足


你知道为什么会这样吗?我无法在它出现故障之前检查内存使用情况,但当它仅达到大约3gb的内存时,它似乎会出现故障。

您是否通过使用forever的启动脚本运行?如果是这样的话,找到一种方法来添加一行Max old space..

使用forever,我使用forever start-c node-Max_old_space_size=12000 app.js,它应该将命令传递给node…起初我认为它永远不能正常工作,也不能传递参数…但现在我尝试使用mon和upstart,它可以让你指定任何你想要的命令,我很高兴仍然在运行错误…所以现在我不再认为它永远是特定的,或者该节点没有得到max_old_space_size参数…我可以尝试在没有max_old_space_size参数的情况下运行它,看看它是否在同一部分崩溃,但是为什么mon或upstart不运行指定的命令呢?我在node中也有这个max old space问题。。但我无法测试它,节点是否接受该空间?它没有向我们展示任何东西。。我曾经用twitter公共流媒体测试过它,尽管我给了max旧空间,它还是崩溃了。。。我在windows中进行了测试。是的,我遇到了最大旧空间大小似乎不一致的问题。需要注意的一点是,我上次检查的32位版本的node有一个硬上限,不管您传递给max_old_space_size的是什么,并且在所有版本中对单个字符串的大小都有限制,因此,即使您遇到内存不足错误,也不一定是因为max_old_space_size。因此……我只是重现了这个问题,而不是在周一跑步,永远,或者upstart,所以这不是问题所在…我运行的命令没有问题,与我现在运行的命令之间的唯一区别是,现在我正在使用>>/root/output.log 2>&1将输出写入日志文件,而另一个正在将其管道传输到tee…我想再次测试我的旧工作命令,以确保它仍然工作因为这种差异是没有意义的,是吗?您使用的是哪个版本的node?如果是0.10.33版本,您是否尝试过使用0.11.14?在这一点上,在0.11。x中有很多事情要走得更远,你可能想考虑一下。OMG,我一直沿着那条路走下去,再也不会回去了。我在使用最新的节点时遇到了巨大的性能和内存问题。垃圾收集器占用了99%的处理时间,有时垃圾没有被清理。切换回最新的马厩,一切都已修复。我花了很长时间来诊断,因为我从来没有想到.11分支可能会有那么多问题。我甚至没有在这里责备node,它看起来像是一个v8问题,但我从来没有想到新的v8版本会带来这样的问题。无论如何。我想我发现了问题所在。运行最后一个测试是肯定的,但我认为是-expose-gc选项导致了问题。我原以为我以前的工作指令里也有,但现在看来我可能弄错了。不……我错了,不是那样。我不知道是什么问题。前几天我让它运行了几天,使用了8gb的内存,没有任何问题。。。