Я пытаюсь использовать async java-клиент для чтения async. Я имею в виду, например, упомянутого в http://www.aerospike.com/docs/client/java/usage/asyncАбонентская блокировка клиента ASISK
Я использую ниже получить для чтения Get (BatchPolicy политики, RecordArrayListener слушателя, ключевые клавиши [])
Это прекрасно работает с несколькими запросами, однако после того, как делает почти ~ 50000 запросов, потоки переходят в неопределенное состояние ожидания. Ниже показана трассировка стека для одного из потоков.
"pool-11-thread-1" - Thread [email protected]
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <737890e3> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
at com.aerospike.client.async.AsyncCluster$BlockBufferQueue.getByteBuffer(AsyncCluster.java:114)
at com.aerospike.client.async.AsyncCluster.getByteBuffer(AsyncCluster.java:68)
at com.aerospike.client.async.AsyncCommand.execute(AsyncCommand.java:59)
at com.aerospike.client.async.AsyncMul tiExecutor.execute(AsyncMultiExecutor.java:36)
at com.aerospike.client.async.AsyncBatch$GetArrayExecutor.<init>(AsyncBatch.java:249)
at com.aerospike.client.async.AsyncClient.get(AsyncClient.java:568)
Может кто-нибудь предложить, почему это может произойти или как предотвратить это.
Эй, это работает. Я пользователь пул потоков фиксированного размера Executors.newFixedThreadPool (asyncClientPolicy.asyncMaxCommands) В AsyncClientPolicy мы имеем конфигурацию asyncSelectorThreads. Он не дает подробностей об этом в документации. Можете ли вы предложить, какое оптимальное значение должно быть установлено. –