Alo*_*lon 10 javascript garbage-collection memory-management v8 node.js
背景:我来自微软世界,我曾经在IIS上存储过网站.经验教会我每天回收一次应用程序池,以消除由于碎片造成的奇怪问题.回收应用程序池基本上意味着重新启动应用程序而无需重新启动整个IIS.我还观看了一个演讲,解释了微软如何在.Net 4.5中减少了很多碎片.
现在,我正在将Node.js应用程序部署到生产环境中,我必须确保它始终完美无缺.我本来想让我的应用程序每天重启一次.然后我做了一些研究,以便找到一些关于Node.js中碎片问题的线索.我发现的唯一一件事是在V8中描述GC的文章中的一段内容:
为了确保快速的对象分配,短暂的垃圾收集暂停,以及"无内存碎片V8"采用了一种世界级的,世代的,准确的垃圾收集器.
这句话真的不足以让我放弃为我的应用程序构建重启机制,但另一方面,如果没有问题,我不想做一些工作.
所以我的问题是:
我应该或不应该不时地重启我的应用程序以防止碎片?
Par*_*ris 11
在知道内存消耗确实存在问题之前实现服务器重启是一种过早的优化.因此,在你真正发现它是一个问题之前,我认为你不应该这样做.您可能会发现要优化的更重要问题,而不是内存消耗.
要确定是否需要重新启动服务器,我建议您执行以下操作:
通常,我建议为所有动态垃圾收集语言重新启动服务器.这在那些类型的大型应用程序中相当常见.几乎不可避免的是,代码库中的某个小错误或您所依赖的库之一会泄漏内存.即使您修复了一个泄漏,最终也会得到另一个泄漏.这可能会使您的团队感到沮丧,这将基本上导致服务器重启策略,并定义应用程序的内存消耗可接受的内容.
归档时间: |
|
查看次数: |
653 次 |
最近记录: |