【发布时间】:2015-07-07 00:47:57
【问题描述】:
尝试将我的应用程序从节点 0.10.x 升级到节点 0.12.x 系列时,我遇到了一个令人不快的意外:0.12 使用的 RAM 比 0.10 多 15%-20%。
从 io.js 问题页面上的 few threads 来看,似乎问题出在底层 v8 引擎上。
现在,软件更新很难卖给管理层。再加上需要支付更多的 VPS 硬件而几乎没有明显的好处,这对我们来说是一个交易破坏者。
有没有办法禁用 v8 添加的占用额外 RAM 的任何新功能?也许是吹捧的 CPU 分析东西?
我基本上是在寻找可以将内存使用量减少到与节点 0.10 附带的 v8 相当的水平的 v8 开关。
【问题讨论】:
-
io.js 在您的应用程序中与 0.10 相比如何?
-
我只是尝试测试它,但遇到了一堆未解决的 npm 问题(node-gyp 不兼容)。那时我放弃了,即使我可以让它在这个测试系统上运行,它似乎也不是我可以在生产中依赖的东西。
-
请考虑针对您在 io.js 中遇到的错误打开问题,我认为无论您获得超过 0.10 的性能,您都可以通过使用生成器而不是闭包来获得更快的异步操作。另外 - 你真的失去了性能还是仅仅失去了内存使用? (如,给定相同数量的可用系统内存 - 它是否也会减少 15% 的请求?)
-
重写整个应用程序是不可行的。也许是未来项目的想法。很难判断性能。它不是面向公众的应用程序,因此没有像请求率这样的简单指标。但性能在 0.12 上似乎还不错。我们的大部分压力都在内存而不是 CPU 上,这就是它如此糟糕的原因。
-
不幸的是,事实并非如此。我发现这个问题的方法是当 linux 内核开始杀死那些曾经在其 VPS 内存分配边缘附近工作的节点时。如果这里是预分配的缓存,v8 显然放不下。
标签: node.js performance memory