Rails&Couchbase - 内存泄漏

Laz*_*dis 19 ruby caching ruby-on-rails couchbase

我有以下测试代码:

def loop_bucket_gets
    bucket = Couchbase::Bucket.new({:node_list => ['xxx.xxx.xxx.xxx:8091', 'yyy.yyy.yyy.yyy:8091'],
                                    :bucket => 'Foo',
                                    :pool => 'default',
                                    :expires_in => 1.day,
                                    :default_format => :marshal,
                                    :key_prefix => '_foo'
                                   })

    i = 0
    loop do
      begin
        i += 1
        bucket.get "ABC#{i}"
      rescue ::Couchbase::Error::Base => e
        nil
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

当我在rails控制台中执行该方法时,内存泄漏.

我正在使用:

  • couchbase 1.3.10 gem
  • libcouchbase 2.4.3

有任何想法吗?

更新:已 创建问题:https: //www.couchbase.com/issues/browse/RCBC-187

小智 0

您的循环中没有终止条件,因此它将永远运行并导致您提到的内存问题。您应该在循环中添加相关break条件并测试它是否可以解决问题。

def loop_bucket_gets
    bucket = Couchbase::Bucket.new({:node_list => ['xxx.xxx.xxx.xxx:8091', 'yyy.yyy.yyy.yyy:8091'],
                                    :bucket => 'Foo',
                                    :pool => 'default',
                                    :expires_in => 1.day,
                                    :default_format => :marshal,
                                    :key_prefix => '_foo'
                                   })

    i = 0
    loop do
      begin
        i += 1
        bucket.get "ABC#{i}"
        break if YOUR_TERMINATING_CONDITION
      rescue ::Couchbase::Error::Base => e
        nil
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)