비동기 읽기 용으로 async java 클라이언트를 사용하려고합니다. 나는 GET (BatchPolicy 정책, RecordArrayListener 리스너, 키 [] 키)Aerospike Java 비동기 클라이언트 차단
이 그러나 거의 한 후, 몇 요청과 잘 작동을 읽을 얻을 아래 사용하고 http://www.aerospike.com/docs/client/java/usage/async
에 언급 된 예를 참조하고 ~ 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 구성이 있습니다. 문서에서 이에 대한 세부 정보를 많이 제공하지는 않습니다. 이것이 최적의 값으로 설정되어야한다고 제안 할 수 있습니까? –