Большое количество KV-операций (вставка, вставка) в сегменте базы данных приводит к concurrent.timeout.Exception
Я пытаюсь вставить / вставить документы в базу данных couchbase, используя Java JDK-клиент 2.4.7 и couchbase server 5.0.1. Кластер couchbase настроен на AWS EC2 с 6 узлами данных типа m4.2xLarge и двумя узлами индекса / запроса типа m4.xLarge.
Количество документов (записей), которые нужно вставить в базу, составляет около 6 миллионов. Эти записи сгруппированы в куски по 10К каждый. 20 рабочих потоков выполняют операцию вставки / вставки для каждого фрагмента размером 10 Кбайт, перебирая каждую запись с использованием цикла for. Время, затрачиваемое на вставку каждого чанка, продолжает увеличиваться в течение регулярного интервала, что в итоге приводит к следующему исключению:
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 Endpoint Count = 3; KV Timeout = 5000; Тайм-аут соединения = 10000; Рабочие темы = 20;
Можете ли вы предложить оптимальную конфигурацию для этого варианта использования.