使用节点spider和mongodb时发生内存泄漏

时间:2015-09-07 02:35:11

标签: node.js mongodb express

我编写了一个简单的nodejs app(nodejs + express + mongoose),使用node作为spider来获取一些url清除内容并将其保存在mongodb中。我的vps是256M内存,所有页面都小于50。

当我访问" / rss / init"那么它将在mongodb中保存50页。然后我访问" / rss",它停止了,OOM发生了。

代码少于50行。任何的想法? https://github.com/atreeyang/web2rss/blob/master/routes/rss.js

处的所有代码
router.get("/init", function(req, res) {
var urls = new Array("http-to-rss-url-1");
var rssItemArr = new Array();
async.each(urls, function (item, callback) {
    spide.fetchRss(item).then(function(a){
        for(var j in a){
            console.log("push ++" + a[j].link);
            rssItemArr.push(a[j]);
        };
        callback();
    });
}, function (err) {
    if(err) console.log("err1: " + err);
    else {
        var art = new article();
        async.each(rssItemArr, function (t, callback) {
            console.log("t ==" + t);
            spide.getCleanBody(t.link).then(function(b){
                art.link=t["link"];
                art.title=t["title"];
                art.content=b.content;
                art.save(function (err) {
                });
                callback();
            });
        }, function (err) {
            console.log("err2: " + err);
            rssItemArr = null;
        });
    }
});
res.render("index", { title: "init done" });

并且主页是页面'列表

router.get("/", function(req, res, next) {

var q = article.find({},"link title",{limit:30})
q.exec(
    function (err, docs) {
        console.log("docs is ;;;==" + docs);
        res.render("index", { docs: docs });
    });

});

0 个答案:

没有答案