Cassandra依赖于任意命令

时间:2014-07-29 15:58:05

标签: cassandra cql phpcassa

我们在AWS上托管Cassandra 2.0.2群集。我们最近开始从普通驱动器升级到SSD驱动器,通过引导新节点和退役旧节点。它运行得相当好,除了两个节点永远停止退役。现在,在新的6个节点运行后,我们注意到一些旧的工具,使用phpcassa停止工作。安全组没有任何改变,所有端口TCP / UDP都是打开的,telnet可以通过9160连接,cqlsh可以“使用”一个集群,选择数据,然而,'描述集群'失败,在cli中,'show keyspaces'也失败了 - 失败,我的意思是永远不会退出提示,也不会返回任何结果。查询在新节点中运行良好,但即使是等待退役的旧节点也无法执行。生产系统,也使用phpcassa,执行正常的数据请求 - 它工作正常。

所有cassandras都具有相同的配置,相同的版本,以及安装它们的相同包。由于种子节点更改,最近重新启动了所有节点。

版本:

连接### ####。compute-1.amazonaws.com:9160。 [cqlsh 4.1.0 | Cassandra 2.0.2 | CQL规范3.1.1 |节俭协议19.38.0]

我的想法已经用完了。任何提示都将不胜感激。

更新

经过一些随机调查,这里有更详细的描述。

如果我cassandra-cli到任何机器,并且“显示键空间”,它就可以工作。

如果我将cassandra-cli连接到远程计算机并执行“显示键空间”,它将无限期挂起。

如果我cqlsh到远程cassandra,并做一个描述键空间,它会挂起。 ctrl + c,重复相同的查询,立即响应。

如果我cqlsh到本地cassandra,并做一个描述键空间,它就可以工作。

如果我cqlsh到本地cassandra,并从Keyspace限制x执行select *,它将返回一定数量的数据。我能够以760的限制返回数据,761会失败。

如果我全部保持一致,并选择相同,它就会挂起。

如果我进行跟踪,不同的机器会返回数据,但有时source_elapsed为“null”

不要忘记,经过多次尝试后,查询群集的应用程序有时会获得结果。

更新2

进一步播放引入了两个节点的失败引导失败,一个挂在引导程序上4天,最终失败,可能是由于滚动重启,另一个在2天后失败。修复不起作用,并引入“Stream failed”错误,以及“Thread Thread [StorageServiceShutdownHook,5,main] java.lang.NullPointerException”中的“Exception”。此外,执行修复后,开始获取“读取无效帧大小为0.您是否在客户端使用tframedtransport?”,所以..

解决方案

将hsha的rpc_server_type切换为同步。所有问题都没了。我们和hsha一起工作了好几个月。

如果有人也偶然发现: http://planetcassandra.org/blog/post/hsha-thrift-server-corruption-cassandra-2-0-2-5/

1 个答案:

答案 0 :(得分:3)

cassandra.yaml

rpc_server_typehsha切换为sync