设置:
-2节点Cassandra 2.0.7.31集群
-replicas = 1
- 具有默认配置
- 使用DataStax java驱动程序1.0
活动 使用QueyBuilder类进行简单的插入查询
结果
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)
答案 0 :(得分:1)
问题是,在我的最后,我创建了一个线程一个连接模型。这是非常同步的。但是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]此链接很有用
答案 1 :(得分:0)
转到您的cassandra.yaml文件。它将出现在您的cassandra安装的 conf 文件夹中。
对于 listen_address ,请提供cassandra服务器的IP地址。例如
listen_address: 10.181.13.239
然后重新启动cassandra服务器。另外,请注意未检查本机传输的端口。应该有一个像
这样的条目native_transport_port: 9042