- 您可以将 OpsCenter 用作有关数据存储位置以及集群中发生的情况的指南,但它实际上更像是一个仪表板。真正的“磁带故事”来自 'nodetool' 通过服务器节点上的命令行,例如
#shell> 节点工具状态
状态=上/下 |/ 状态=正常/离开/加入/移动
-- 地址加载令牌拥有主机 ID 机架 UN 10.xxx.xxx.xx 43.95 GB 256 33.3%
b1e56789-8a5f-48b0-9b76-e0ed451754d4 RAC1
您使用的是什么类型的压缩?
您提出了一种“灵丹妙药”的问题,因为可能有几个因素在起作用。这些是示例但不限于:
A.数据大小,以及 Cassandra 中的整行(您可以使用 nodetool cf_stats table_size 条目查看这些)。导致二进制大小大于 16M 的行将被视为“超”宽行,这可能表明您的数据模型中的架构需要“复合”或“复合”行键。
B.您在复制和网络策略方面的设置类型。
C.数据入口点,Cassandra 如何获取数据。你在使用 Python 吗? php?输入什么数据?你可以从一个错误的 PHP 驱动程序的集群中获得时髦的行为(例如)
D. Vnode 是好的,但也可能是坏的。您正在运行哪个版本的 Cassandra?您可以通过带有 cqlsh -3 的 CQLSH 查找,然后输入“显示版本”
E.压实类型是一个大杀手。您使用的是 SizeTieredCompaction 还是 LevelCompaction?
首先从运行任何给定节点的服务器上的命令行运行“nodetool cfstats”。感兴趣的特定领域将是(此时)
压缩行最小尺寸:
压缩行最大大小:
在具有 Y 数量 RAM 的系统上,超过 X 数量的字节可能是一个严重的问题。确保 Cassandra 有足够的 RAM 并且堆栈已调整。
Cassandra 上的默认性能配置通常应该足够了,所以下一步是使用“cqlsh -3 hostname”打开一个到节点的 CQLSH 接口并发出命令“describe keyspaces”。获取您正在运行的已知键空间名称并发出“描述键空间 FOO”并查看您的模式。特别感兴趣的是您的主键。您使用的是“复合行键”还是“复合主键”? (如此处所述:http://www.datastax.com/dev/blog/whats-new-in-cql-3-0)如果没有,您可能需要根据预期的读/写负载。
还要检查您的初始应用程序层如何将数据插入 Cassandra?使用 PHP? Python?正在使用哪些驱动程序?使用某些 Thrift 连接器(例如 Java 驱动程序或 PHPcassa 驱动程序)的 Cassandra 版本
除了这些步骤之外,还要考虑您的节点是如何创建的。
请注意,必须减轻从静态节点到虚拟节点(或 vnode)的迁移。您不能简单地在已填充的节点上切换配置。您将需要检查 /etc/cassandra/cassandra.yaml 中的 initial_token: 设置。我在这里问自己的问题是“设置了哪些初始令牌?(没有用于 vnode 的初始令牌)在填充数据后令牌是否更改?”对于我通常运行的静态节点,我使用如下工具计算它们:[http://www.geroba.com/cassandra/cassandra-token-calculator/],因为我遇到了 vnode 的并发症(尽管它们现在比以前更可靠)。