javascript – Node.js和碎片

前端之家收集整理的这篇文章主要介绍了javascript – Node.js和碎片前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景:我来自微软世界,我曾经在IIS上存储网站.经验让我每天回收一次应用程序池,以消除由于碎片而引起的奇怪问题.回收应用程序池基本上意味着重新启动应用程序,而无需重新启动整个IIS.我也看过一个演讲,解释了微软如何在.Net 4.5中大大减少了碎片.

现在,我正在将Node.js应用程序部署到生产环境中,我必须确保它始终是完美无缺的.我原来以为让我的应用程序每天重新启动一次.然后我做了一些研究,以找到关于Node.js中的碎片问题的一些线索.我唯一发现的是an article describing GC in V8的段落:

To ensure fast object allocation,short garbage collection pauses,and
the “no memory fragmentation V8” employs a stop-the-world,
generational,accurate,garbage collector.

这个说法真的不足以让我放弃为我的应用程序建立重新启动机制,但另一方面,如果没有问题,我不想做一些工作.

所以我的问题是:

应该还是不应该重新启动我的应用程序,以防止分裂?

解决方法

在知道内存消耗确实是一个问题之前,实施服务器重新启动是一个过早的优化.因此,我不认为你应该这样做,直到你发现这是一个问题.您可能会发现更重要的问题来优化而不是内存消耗.

要确定您是否需要重新启动服务器,建议您执行以下操作:

>设置一些监控工具,如https://newrelic.com/,让您的监视器的性能.
>连续监视你的记忆.尝试看看消耗的内存量是否稳定增加,或者如果它消失了.
>在您需要采取行动之前决定可接受的门槛.例如,一旦您的应用程序消耗了60%的系统内存,您需要开始考虑服务器重新启动并决定重新启动间隔.
>确定在重新启动服务器时是否有“停机时间”是否正常.如果您不想停机,您可能需要构建代理层来引导流量.

一般来说,我建议服务器重新启动所有动态垃圾收集语言.这在这些类型的大型应用中是相当普遍的.几乎不可避免的是,你的代码库中的某个小错误,或者你依赖的一个库会泄漏内存.即使你修复了一个泄漏,最终会得到另一个泄漏.这可能会阻碍您的团队,这将基本上导致服务器重新启动策略,以及关于应用程序的内存消耗可接受的定义.

猜你在找的JavaScript相关文章