最近使用couchbase,发现它很占cpu,开启一个连接已经到了120%,开两个连接cpu直接被占满了。使用了jprofiler查到了原因,原来是在ViewConnection.java中有一段
@Override
public void run() {
while (running) {
if (!reconfiguring) {
try {
handleIO();
} catch (IllegalStateException e) {
logRunException(e);
} catch (Exception e) {
logRunException(e);
}
}
}
getLogger().info("Shut down Couchbase client");
}
这里开启了一相线程专门用来轮询处理io,貌似是用来处理多个servernode的问题。所以在try里面加句sleep(100);就可以了,让它每次轮询一遍就休息100ms。
做了这样的配置后测试了下,插入10w条数据,没什么问题。当用到couchbase的分布式的时候,再测下吧。
通过在ViewConnection.java中加入sleep(100)来降低CPU使用率,解决Couchbase连接高负载问题。测试显示插入大量数据时性能稳定。
149

被折叠的 条评论
为什么被折叠?



