我有两个环境:一个是grunt环境,用于处理推送到实时生产数据库的每周进程。另一个是带有生产数据库的实时应用程序本身。
我最近在Grunt中做了一些优化,以更好的方式处理和存储数据,从而产生了更快的应用程序和更好的整体用户体验。我的问题是,我在每周生产期间进行的处理消耗了大量内存,需要大约10个小时。我同意花10个小时,但我的问题是内存使用率高达95%,实时应用的响应时间开始爬行,几乎没有响应,直到grunt进程完成。
我的问题是。如果不添加额外的RAM (现在是8 8GB),如何让Grunt运行此进程而不影响实时应用程序中的用户体验?谢谢你能提供的任何建议。
发布于 2015-07-21 01:05:53
我认为“正确”的答案是使用另一台机器。出于这个原因,您不应该在为您的生产网站提供服务的同一台计算机上运行批量处理任务-它们往往会消耗所有可用资源,而不会留下任何资源留给您的web服务器。
如果--不管是什么原因--另一台机器不是可选的,那么你需要诊断为什么你的批量任务消耗了这么多内存。node-inspector和memwatch是很好的起点。这些将允许您检查JavaScript堆以查看内存中的内容。
然而,JS堆通常被限制在1到1.9 GB之间(取决于节点版本),所以如果您的批量任务使用了更多,有几种可能性:
Buffer
没有被释放。https://stackoverflow.com/questions/31521472
复制相似问题