提问人:Lazarus Lazaridis 提问时间:11/3/2014 最后编辑:the Tin ManLazarus Lazaridis 更新时间:2/27/2023 访问量:1184
如何查找并修复 Rails 和 Couchbase 内存泄漏
How to find and fix a Rails and Couchbase memory leak
问:
我有以下测试代码:
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
当我在 Rails 控制台中执行此操作时,内存泄漏。
我正在使用:
- Couchbase 1.3.10 宝石
- 库 2.4.3
我在 https://www.couchbase.com/issues/browse/RCBC-187 上创建了一个问题
答:
-1赞
Sachin Singh
2/27/2023
#1
您的循环中没有终止条件,因此它将永远运行并导致您提到的内存问题。您应该在循环中添加相关条件,并测试它是否解决了问题。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
评论