终于找到写的 NodeJS 微服务都支持不到 1 天的原因了

终于找到写的 NodeJS 微服务都支持不到 1 天的原因了

  2  
    doubleflower · 160 天前 · 5435 次点击
这是一个创建于 160 天前的主题,其中的信息可能已经有所发展或是发生改变。

前情: https://www.v2ex.com/t/392238

从 Python 转过来写了几个 Node 微服务全它妈的跑一天就 Out of memory,之前暂时用了高内存就主动自杀的补丁顶着。

然后这二天查了相关文章,发现 Node 的 gc 和 Python 是完全不同的,Python 的 gc 相当主动(可能和引用计数有关),一有无用内存当场就回收了,而 Node 不会(类似于 Java )。 默认 64 位机器 Node gc 认为你有 1.4G 内存,到这个点之前 gc 干活相当偷懒,可是我都是跑在 1G 小鸡上的,所以就 BOOM 了。

所以你是在内存小于 1G 的机器上跑比较忙的需长时间运行的程序,需要在 Node 命令行上加上 --max_old_space_size=384 --optimize_for_size 这二参数,我跑了几天内存都没过 400M,而以前没多长时间就超 700M 引起 OOM。

猜你喜欢

转载自blog.csdn.net/jhope/article/details/79594137