内存泄漏问题:Meteor.http

9

当我尝试每秒进行5个并行http请求时,使用Meteor.http.get会导致内存泄漏:gist

match_ids.forEach(function(match_id){
        var url = self.generateUrl(match_id);
        Meteor.http.get(url, function(err, response){
            if(!err && !response.data.result.error){
                callback(null, response.data.result);
            }else{
                callback(err || response.data.result.error, match_id);
            }
        })
    });

即使我将速率降低到每秒1个请求,它似乎仍然表现相同。
Meteor.setInterval(function(){
    module.feeder.getMatchesForCarry();
}, 2000);

Meteor.setInterval(function(){
    Meteor.call("TEMP_d2_match_analyzerInsertSampleData", 9, function(err,response){});
}, 10000);

这个问题的根源是Node还是Meteor?

如果我每秒执行5个请求,在运行约5分钟后,我会得到80-100兆填充。


我对这个非常感兴趣。我觉得我在我的一个服务器上可能遇到了相同的情况(循环http请求)。请看这个问题:https://dev59.com/NmAg5IYBdhLWcg3w0Noz 这在我的机器上本地运行时没有发生。也许我们可以交流一下。你正在使用哪个操作系统版本?Node的版本是多少? - landland
我正在使用Lubuntu 14.04进行开发,Node版本为0.10.26。希望在部署之前能找到解决方法,并在这里发布我是如何做到的。同时,我已经在Meteor上发布了一个问题(https://github.com/meteor/meteor/issues/2073)。 - user2984305
我现在进行了一个测试,共有3000个链接,每2秒批处理10个链接。60mb => 100mb - user2984305
我看到了你发布的问题。如果可能的话,请尝试提供一个包含演示该问题的最简代码的存储库。否则,如果代码太复杂,他们可能不会查看它。我使用的是Ubuntu 12.04和Node 0.10.25。这是我能接近我的开发机器的版本。我刚刚开始进行分析,所以我将运行更多测试。 - landland
1
这个问题在2018年仍然存在吗? - Jankapunkt
@Jankapunkt 没有。 - DoctorPangloss
1个回答

0

你分享的代码没有问题。如果你确实遇到了内存泄漏问题,那么原因在其他地方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接