首页 文章

无法连接到cassandra:NodeContext终止会话的所有池连接

提问于
浏览
1

当我尝试在我的java应用程序中连接到cassandra时,我在此消息的末尾收到异常 . 我正在使用pelops库来访问数据库 . 数据库正在开发linux,我的开发环境是在windos 7上 . 有趣的是

WARNING: 10.0.0.7 NodeContext killing all pooled connections for session 44

10.0.0.7是cassandra节点的IP . 我可以用cassandra-cli连接这个节点 . 经过几个小时的谷歌搜索,我决定问,我做错了什么?完整的堆栈跟踪如下 .

SEVERE:org.apache.thrift.transport.TTransportException:java.net.ConnectException:Connection refused:在org.apache.thrift.transport.TSocket.open(TSocket.java:185)的org.wyki.cassandra.pelops上连接 . ThriftPool $ Connection.open(ThriftPool.java:329)org.wyki.cassandra.pelops.ThriftPool $ NodeContext.createConnection(ThriftPool.java:438)at org.wyki.cassandra.pelops.ThriftPool $ NodeContext.access $ 5(ThriftPool) .java:429)在java.util的java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)的org.wyki.cassandra.pelops.ThriftPool $ NodeContext $ 1.run(ThriftPool.java:494) .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)引起:java.net.ConnectException:连接被拒绝:连接java.net.PlainSocketImpl . java.net.PlainSocket上面的套接字(本机方法)java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333),java.net.PlainSocketImpl.c中的java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)在java.net.Socks.Socket.connect(Socket.java:529)的java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)上的onnect(PlainSocketImpl.java:182),java.net.Socket.connect(Socket.java) :478)org.apache.thrift.transport.TSocket.open(TSocket.java:180)... 7更多

警告:10.0.0.7 NodeContext会终止会话44的所有池连接

4 回答

  • 1

    “拒绝连接”意味着Cassandra没有收听您正在连接的界面 . 默认情况下,Cassandra侦听localhost上的端口9160 . 如果要连接外部,则需要更改;阅读配置文件中ThriftAddress的注释 .

  • 0

    在与Cassandra Build 连接时,Pelops没有做任何远程棘手的事情,所以看起来Pelop特有的不太可能 .

    我刚看了一下Hector连接代码,它看起来几乎一样:https://github.com/rantav/hector/blob/master/core/src/main/java/me/prettyprint/cassandra/connection/HThriftClient.java

    cassandra-cli代码看起来几乎一样:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/cli/CliMain.java#L57

    附:不应将Cassandra配置为侦听0.0.0.0 . 请参阅Cassandra常见问题解答中的"Why can't I make Cassandra listen on 0.0.0.0 (all my addresses)?" .

  • 1

    看来这是pelops的一个问题,这是一个位于cassandra的thrift客户端之上的库 . 连接到Cassandra和Linux机器上的客户端有一些问题 .

  • 0

    我有一个相同的例外与“任何”客户端连接到cassandra远程:

    ConnectException:连接被拒绝

    通过搜索,我无法找到快速的解决方案,只需仔细阅读cassandra.yaml中的cassandra文档和评论 - 它们非常方便!

    所以对我来说工作如下:将 rpc_address 值更改为您用来连接到客户端的cassandra实例的主机名或ipaddress

相关问题