我编写了一个简单的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 });
});
});