【问题标题】:Why node.js memory leak when restart redis为什么重启redis时node.js内存泄漏
【发布时间】:2012-02-29 18:24:03
【问题描述】:

如果你运行下面的代码,然后重新启动你的redis服务器,你会得到一两个uncaughtException,但不再有错误了,然后内存增长很快,我想知道为什么以及如何解决这个问题问题。

/**
 * This code will memory leak, if you restart redis server when the node process is running
 * 
 * @author Gui Lin
 */
var redis = require('redis').createClient();

setInterval(function(){

  redis.multi()
    .zrangebyscore('timeup', 0, Date.now())
    .zremrangebyscore('timeup', 0, Date.now())
    .exec(function(err, data) {
          if(err) console.log(err.stack);
          if(data) data = data[0];
      });
}, 1);

process.on('uncaughtException', function(err) {
    console.log(err.stack);
})

【问题讨论】:

    标签: node.js v8


    【解决方案1】:

    可能是node_redis 在它的offline_queue 中排队命令。您可以检查redis.offline_queue.length,并且可能会在它变得太大时停止发出命令,或者类似的东西。另见node_redis documentation(搜索offline_queue)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2016-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多