【问题标题】:Cassandra native transport port 9042 slow on EC2 MachineEC2机器上的Cassandra本机传输端口9042慢
【发布时间】:2014-02-08 18:07:18
【问题描述】:

我在 EC2 上设置了一个 5 节点 Cassandra 集群,全部位于同一区域。

如果我通过 cqlsh (9160) 连接,查询会在一秒钟内做出响应。

当我通过开发中心或使用本地 Java 驱动程序进行连接时,两者都使用端口 9042,查询需要 20 多秒才能响应。

他们始终在相同的 21 秒区域做出响应。永远不要先快后慢。

我已经在 EC2 上设置了一些 Cassandra 集群,之前也看到过这种情况,但不知道如何解决问题。上次我把集群报废了,新建了一个,9042端口的响应时间还不错。

对于如何调试或解决此问题的任何帮助,我们将不胜感激,谢谢。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    当前版本的 DevCenter 旨在支持作为主要场景运行(较长)CQL 脚本(相对于交互式控制台,查询一个接一个地执行)。 DevCenter 使用DataStax Java driver for Cassandra 作为底层连接器。

    对于上述场景,为了确保没有“冲突”,每次执行都会创建一个新的Session。当Session被初始化时,驱动会执行自动节点发现,创建连接池等。基本上它做了很多准备工作。根据您的客户端机器到 EC2 节点的延迟、集群的大小以及这些节点的配置(请参阅connection requirements),此初始化阶段可能会非常昂贵。

    正如您可以想象的那样,准备所花费的时间并不代表运行 DDL 脚本的大部分时间和相当大的插入/更新大小。但对于交互式场景,它会导致次优行为(您所描述的行为)

    DevCenter 的下一个版本将解决交互式场景并针对它进行优化,以使用户体验达到您的预期。支持这种情况在我们的优先事项列表中非常重要。

    【讨论】:

      【解决方案2】:

      底层 Java 驱动程序在初始连接时获取整个集群拓扑。这使其能够自动连接到集群中的任何节点。在 EC2 上,它只获取私有地址,尝试每个地址,然后超时。然后它通过初始连接发送请求

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 2015-08-25
        • 2018-10-30
        • 2020-08-16
        • 2018-10-31
        • 2021-09-26
        • 1970-01-01
        • 2021-08-04
        • 2019-08-20
        相关资源
        最近更新 更多