【发布时间】:2015-11-16 22:39:48
【问题描述】:
我们正在尝试将 Apache Cassandra 用于一个大型项目,并且我们有一个 Python 脚本可以在数据库集群中运行 INSERT 查询。
在开发人员笔记本电脑 (MacOSX) 上测试脚本时,它可以完美运行,并且可以毫无问题地执行所有 INSERT。
每次在生产机器(Linux)上运行时,它总是有一个:
cassandra.OperationTimedOut: errors={}, last_host=cassandra1.example.com
我们使用DataStax Python Driver 并在创建集群时使用多个主机(cassandra1.example.com 和 cassandra2.example.com)。
两台计算机在网络方面具有相同类型和级别的访问权限(无防火墙等)。生产服务器与数据库的 ping 时间为 4 毫秒,而开发人员的笔记本电脑平均为 40-50。
任何想法似乎是什么问题?
【问题讨论】:
-
如果您分享您的插入代码会有所帮助。我的直觉告诉我,你正在压倒可能不如你的 osx 机器强大的云服务器。
-
你是说一切都超时了吗?连接?要求?所有请求,还是仅部分请求?
-
Everything 超时,nothing else 正在使用集群。这是一个空的 Cassandra 实例,我尝试向它提供数据。在 OS X 笔记本电脑上使用相同的脚本,在更差的网络条件下(10x RTT)并且一切正常......
-
没有更多信息,无法判断。发生这种情况时,服务器上的负载是什么样的?故障总是同一台机器吗?您的重试和负载平衡策略是什么?你的射频是多少?有多大的集群?一致性水平?你在使用批次吗?你是在做异步查询还是同步?如果是异步的,你是在使用 cassandra.concurrent 模块还是只是爆破?
-
我很乐意回答任何问题以解决问题。 Cassandra 集群是一个全新的 3 节点集群。也就是说,除了我试图插入的表之外,它没有数据。我已经在集群初始化中添加了所有 3 台机器,但始终将第一台机器报告为最后一次尝试。一致性级别是默认的且未更改。我没有使用批次。我正在做同步查询。在 Mac OS X 笔记本电脑上运行相同的脚本可以正常工作,并将结果添加到数据库中。使用笔记本电脑和 cassandra 服务器上的 cqlsh 手动运行查询