【问题标题】:Relation between system specifications and Cassandra configuration parameters系统规格与 Cassandra 配置参数的关系
【发布时间】:2018-10-18 09:37:52
【问题描述】:

Cassandra 的配置参数(下面给出当前值)、Datastax 的 C++ 驱动配置参数(下面给出当前值)和节点的硬件规格(处理器数量、RAM、磁盘数量等)之间是否存在关系? )

Cassandra 的配置参数(在 YAML 中)

concurrent_reads set as 16
concurrent_writes set as 256
native_transport_max_threads set as 256
native_transport_max_frame_size_in_mb set as 512

Datastax 的 C++ 驱动程序配置参数

cass_cluster_set_num_threads_io set as 10
cass_cluster_set_core_connections_per_host set as 1
cass_cluster_set_max_connections_per_host set as 20
cass_cluster_set_max_requests_per_flush set as 10000

节点规格

No. of processors: 32
RAM: >150 GB
No. of hard disks: 1

Cassandra's Version: 3.11.2 Datastax C++ driver version: 2.7 RHEL version: 6.5

我有一个由 2 个节点组成的集群,但吞吐量一直很低(12000 次操作/秒)。 1 次操作 = 读 + 写(我不能使用行缓存)。是否有任何参数应该设置得更高/更低(考虑节点的规格)?

还请注意,我的读写应用程序是多线程的(10 线程)。另外,我正在做异步读取+异步写入(使用未来)。 复制因子为2,两个节点在同一个DC,一致性 读写级别也是2。

【问题讨论】:

    标签: cassandra datastax cassandra-3.0


    【解决方案1】:

    Cassandra 中的一些配置属性是根据可用的 CPU 内核和驱动器计算得出的。

    concurrent_reads = 16 * (number of drives)
    concurrent_writes = 8 * (CPU cores)
    

    看起来你已经做到了,尽管我会质疑你的 32 个 CPU 是否都是物理内核或超线程。

    我有一个包含 2 个节点的集群,但吞吐量一直很低(12000 次操作/秒)。

    只是我的看法,但认为 12k ops/sec 相当不错。实际上 REALLY 适用于两节点集群。 Cassandra 水平和线性扩展。所以这里的解决方案很简单......添加更多节点。

    您的目标每秒操作数是多少?现在,您正在证明每个节点可以获得 6k 操作/秒。这意味着,如果您添加另一个,集群应该支持 18K/秒。如果你去六个节点,你应该可以支持 36k/sec。基本上,找出你的目标,然后计算一下。

    您可能会考虑的一件事是尝试ScyllaDB。 Scylla 是 Cassandra 的直接替代品,它强调了满足非常高的吞吐量要求的能力。缺点是我认为 Scylla 只是兼容 Cassandra 2.1 或 2.2 的 ATM。但根据您的尝试,这可能值得一试。

    【讨论】:

    • 我使用 'nproc' 命令找出内核。如果是超线程,我应该在 concurrent_reads 的公式中使用该值的一半吗?此外,在我看来,并发读/写、native_transport_max_threads、cass_cluster_set_num_threads_io、cass_cluster_set_core_connections_per_host 将是相关的,关于这些如何完全不相关的任何 cmets?我一直无法理解这些参数在多线程应用程序执行查询中扮演什么角色?
    • @VishalSharma 我会使用 CPU 内核总数的一半,是的。它们并不都与 CPU 内核有关,因为 Cassandra 的主要瓶颈不是 CPU……而是磁盘 I/O。所以会有很多关于优化磁盘 I/O 的设置,这些设置与 CPU 关系不大。
    • 我还想问这些参数(我在上面的评论和问题中提到的)是否在某种程度上是相互关联的,例如如果我为 native_transport_max_threads 设置了一个特定的值,那么这会影响我对 cass_cluster_set_num_threads_io 的值的选择吗?
    猜你喜欢
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2017-08-30
    • 2016-04-04
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多