我正在尝试使用 Java JDK 客户端 2.4.7 和 couchbase 服务器 5.0.1 将文档插入/更新到 couchbase 数据库中。couchbase 集群设置在 AWS EC2 上,具有 6 个 m4.2xLarge 类型的数据节点和两个 m4.xLarge 类型的索引/查询节点。
要插入沙发库的文档数量(记录)约为 600 万。这些记录被组合成每个 10K 的块。20 个工作线程通过使用 for 循环遍历每条记录,为每块 10K 的块执行插入/更新插入操作。插入每个块所花费的时间在定期间隔内不断增加,最终导致以下异常:
java.lang.RuntimeException: java.util.concurrent.TimeoutException
at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:77)
at com.couchbase.client.java.subdoc.MutateInBuilder.execute(MutateInBuilder.java:280)
at com.couchbase.client.java.subdoc.MutateInBuilder.execute(MutateInBuilder.java:103)
at com.onkaar.XXXXXXXX.kernel.infrastructure.data.CouchbaseSaveAccountRepository.saveBatch(CouchbaseSaveAccountRepository.java:56)
at com.onkaar.XXXXXXXX.kernel.storage.StorageTask.executeTask(StorageTask.java:38)
at com.onkaar.XXXXXXXX.kernel.storage.StorageTask.run(StorageTask.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
引起:java.util.concurrent.TimeoutException
以下是我用于连接到 couchbase 集群的环境配置:Couchbase IO Pool Size = 5; 计算池大小 = 5;KV 端点计数 = 3;KV 超时 = 5000;连接超时 = 10000;工作线程 = 20;
您能否建议此用例的最佳配置。