【问题标题】:Can't connect to cassandra : NodeContext killing all pooled connections for session无法连接到 cassandra:NodeContext 杀死会话的所有池连接
【发布时间】:2011-03-11 05:48:59
【问题描述】:

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

警告:10.0.0.7 NodeContext 杀死会话 44 的所有池连接

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

严重:org.apache.thrift.transport.TTransportException:java.net.ConnectException:连接被拒绝:连接 在 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) 在 org.wyki.cassandra.pelops.ThriftPool$NodeContext.access$5(ThriftPool.java:429) 在 org.wyki.cassandra.pelops.ThriftPool$NodeContext$1.run(ThriftPool.java:494) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:619) 引起:java.net.ConnectException:连接被拒绝:连接 在 java.net.PlainSocketImpl.socketConnect(本机方法) 在 java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 在 java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 在 java.net.Socket.connect(Socket.java:529) 在 java.net.Socket.connect(Socket.java:478) 在 org.apache.thrift.transport.TSocket.open(TSocket.java:180) ... 7 更多

警告:10.0.0.7 NodeContext 杀死会话 44 的所有池连接

【问题讨论】:

    标签: java netbeans connection glassfish cassandra


    【解决方案1】:

    “连接被拒绝”意味着 Cassandra 没有在您正在连接的接口上监听。默认情况下,Cassandra 侦听 localhost 上的端口 9160。如果要外部连接,则需要更改它;读取配置文件中 ThriftAddress 的 cmets。

    【讨论】:

    • 它正在监听 9160,主机 0.0.0.0,我可以从远程机器上用 cassandra-cli 连接它。所以这不是问题。
    【解决方案2】:

    Pelops 在与 Cassandra 建立连接时并没有做任何棘手的事情,因此它似乎不太可能是 Pelops 特有的。

    我刚刚快速浏览了 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 监听 0.0.0.0(我的所有地址)?”在 Cassandra 常见问题解答中。

    【讨论】:

      【解决方案3】:

      这似乎是 pelops 的问题,它是 cassandra 节俭客户端之上的一个库。它在连接到在 Linux 上工作的 Cassandra 和在 Windows 机器上工作的客户端时存在一些问题。

      【讨论】:

        【解决方案4】:

        我在远程连接“任何”客户端到 cassandra 时遇到了同样的异常:

        ConnectException:连接被拒绝

        浏览了所以我找不到快速解决方案,只需仔细阅读 cassandra.yaml 中的 cassandra 文档和 cmets - 它们非常方便!

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-24
          • 2022-01-25
          • 2021-06-11
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          • 1970-01-01
          • 2014-08-15
          相关资源
          最近更新 更多