Couchbase线程处于BLOCKED状态

时间:2017-01-25 04:29:00

标签: java couchbase

我们正在对使用Couchbase DB的应用程序进行负载测试。 我们定期进行线程转储。在调用couchbase线程之后的所有线程转储都处于BLOCKED状态。 我们并没有低估这种行为

以下是couchbase环境的配置

  DefaultCouchbaseEnvironment.builder().kvTimeout(5000).connectTimeout(7500)
                .viewTimeout(7500).queryTimeout(7500).disconnectTimeout(10000)
                .retryStrategy(BestEffortRetryStrategy.INSTANCE).build();

我们正在进行简单的CRUD操作,比如

                JsonDocument doc =
                        JsonDocument.create("1236",
                                JsonObject.create().put("name", "test"));
bucket.insert(doc);

下面是我们从Jstack

获得的stackstrace
Thread 4257: (state = BLOCKED)
 - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.concurrent.locks.LockSupport.parkNanos(java.lang.Object, long) @bci=20, line=215 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(int, long) @bci=139, line=1037 (Compiled frame)
 - java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(int, long) @bci=25, line=1328 (Compiled frame)
 - java.util.concurrent.CountDownLatch.await(long, java.util.concurrent.TimeUnit) @bci=10, line=277 (Compiled frame)
 - com.couchbase.client.java.util.Blocking.blockForSingle(rx.Observable, long, java.util.concurrent.TimeUnit) @bci=32, line=72 (Compiled frame)
 - com.couchbase.client.java.CouchbaseBucket.get(java.lang.String, long, java.util.concurrent.TimeUnit) @bci=17, line=118 (Compiled frame)
 - com.couchbase.client.java.CouchbaseBucket.get(java.lang.String) @bci=9, line=113 (Compiled frame)

我们所有的文件都是KB格式的。 我们有一个包含3个节点的集群。 Java sdk version-2.3.4

请指导我们了解行为。

由于

1 个答案:

答案 0 :(得分:0)

我得到了上述问题的正确解释和解决方案。

线程的BLOCKED状态的原因是使用同步操作。

而不是使用

var original = { 
   "fruit" : ["mango","orange"],
   "veg"   : ["carrot"]
}
var converted = _.map(original, function(name, type){
   return {
      type: type, 
      name: name
   };
});

我们使用了couchbase JAVA SDK中提供的异步操作

bucket.insert

这有助于我们获得更好的吞吐量,并且我们没有看到线程处于BLOCKED状态,并且应用程序TPS也增加到非常好的值。

以下是针对上述问题的沙发基础论坛讨论的主题

https://forums.couchbase.com/t/couchbase-threads-are-in-blocked-state/11524/2

希望这会有所帮助。