The setup:
-2节点Cassandra 2.0.7.31集群
-replicas = 1
- 使用默认配置
- 使用DataStax java驱动程序1.0
Activity 使用QueyBuilder类的简单插入查询
Result
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /10.181.13.239 ([/10.181.13.239] Unexpected exception triggered))
at com.datastax.driver.core.exceptions.NoHostAvailableException.copy(NoHostAvailableException.java:64)
at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:214)
at com.datastax.driver.core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:169)
at com.jpmc.es.rtm.storage.impl.EventExtract.main(EventExtract.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /10.181.13.239 ([/10.181.13.239] Unexpected exception triggered))
at com.datastax.driver.core.RequestHandler.sendRequest(RequestHandler.java:98)
at com.datastax.driver.core.RequestHandler$1.run(RequestHandler.java:165)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
2 回答
问题是,在我的最后,我创建了一个线程一个连接模型 . 这是非常同步的 . 但是Datstax驱动程序异步工作(我猜它使用netty)并在单个连接上接受多个请求 . 所以在我的情况下,我为每个请求一个会话,猜猜是什么?我已经离开了开放式连接b / w Driver和Cassandra . 服务器被阻塞,驱动程序也是如此 . 只需让Driver管理其池就可以解决问题 .
默认情况下,Datastax java驱动程序保持最小连接量以处理一定量的并发请求 .
规范说驱动程序在每个连接最多128个请求时有一个处理限制 . 所以当我们驱动程序发现超过128个请求即将到来然后它只打开连接 . 所以Driver正在精心管理连接池 . [http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/PoolingOptions.html]此链接很有帮助
转到你的cassandra.yaml文件 . 它将出现在cassandra安装的 conf 文件夹中 .
对于listen_address,给出cassandra服务器的IP地址 . 例如 .
然后重新启动cassandra服务器 . 另外,请注意未检查本机传输的端口 . 应该有一个条目