gpt4 book ai didi

python - 无法使用最新的 datastax python 驱动程序扩展 cassandra

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:12 25 4
gpt4 key购买 nike

我们正在使用多个 cassandra datastax 集群实例 (6) 通过 python 连接到 cassandra。我们正在汇集这些多个连接来执行一些操作。每个操作都是相互独立的。

它在少量操作上运行良好,但一旦我尝试扩大规模,就会出现以下错误:

NoHostAvailable: ('Unable to complete the operation against any hosts', {<Host: 127.ption('Pool is shutdown',)})

有时会出现以下警告:

WARNING  Heartbeat failed for connection (140414695068880) to 127.0.0.1

我尝试更改一些集群对象参数,但没有帮助。

以下是我正在使用的cassandra中 key 空间的配置:

'class': 'SimpleStrategy','复制因子':'1'

我正在使用最新版本的 cassandra 和 python 的 datastax 驱动程序。只有一个节点是cassandra。

编辑:更多详细信息:

多个集群实例位于不同的进程中(进程是使用 Python 多处理模块创建的) - 每个进程一个集群实例。我们将这些进程称为 Cassandra-Processes (CP)。还有许多其他进程会执行一些计算,并且需要偶尔查找 Cassandra DB 并写入数据。当前的设计是,每个进程都映射到一个CP,并且该进程要完成的所有DB读/写都是通过这个映射的CP完成的。到底要读/写的“内容”被传递到映射的 CP 读取的队列(同样来自多处理库)。

我们观察到此设置运行了相当长的时间 - 然后 Cassandra 突然开始出错。

最佳答案

目前尚不清楚为什么要针对单个 Cassandra 节点使用六个集群实例。一般来说,您应该为每个应用程序(每个远程集群)使用一个集群实例。您可以阅读有关 Cassandra 驱动程序的一般设计注意事项 here

如果您希望“扩展”吞吐量,您可以考虑使用多重处理。我在博客文章 here 中讨论了这个问题.

<小时/>

后续:

从我们目前掌握的信息中可以推断出两件事:

  1. 应用程序推送的并发请求数量超出了连接池配置处理的数量。我这样说是因为“池已关闭”仅在请求等待连接/流变得可用时发生。您可以使用 cluster settings 调整连接池以使其最初可用。 。但是,如果您的“集群”(服务器节点)不堪重负,您将不会获得太多好处。
  2. 您的连接正在关闭。仅当节点突然被标记为 down 时才会发生此异常。在单节点设置中,这很可能是由于连接错误造成的。在服务器日志或驱动程序调试日志中查找线索(如果您正在捕获这些线索)。

我们可能需要更多地了解您的执行模型才能提供更多帮助。您是否可以运行不受约束的异步请求,而不偶尔等待它们完成?

关于python - 无法使用最新的 datastax python 驱动程序扩展 cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31825181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com