我添加了节点(10个节点),但是卡桑德拉应力结果比单节点慢?

时间:2019-06-19 08:14:40

标签: cassandra

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address          Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.170.128  317.66 MiB  256          62.4%             45e953bd-5cca-44d9-ba26-99e0db28398d  rack1
UN  192.168.170.129  527.05 MiB  256          60.2%             e0d2faec-9714-49cf-af71-bfe2f2fb0783  rack1
UN  192.168.170.130  669.08 MiB  256          60.6%             eaa1e39b-2256-4821-bbc8-39e47debf5e8  rack1
UN  192.168.170.132  537.11 MiB  256          60.0%             126e151f-92bc-4197-8007-247e385be0a6  rack1
UN  192.168.170.133  417.6 MiB  256          56.8%             2eb9dd83-ab44-456c-be69-6cead1b5d1fd  rack1
Datacenter: dc2
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address          Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.170.136  386.12 MiB  256          41.0%             2e57fac6-95db-4dc3-88f7-936cd8038cac  rack1
UN  192.168.170.137  518.74 MiB  256          40.9%             b6d61651-7c65-4ac9-a5b3-053c77cfbd37  rack1
UN  192.168.170.138  554.43 MiB  256          38.6%             f1ba3e80-5dac-4a22-9025-85e868685de5  rack1
UN  192.168.170.134  153.76 MiB  256          40.7%             568389b3-304b-4d8f-ae71-58eb2a55601c  rack1
UN  192.168.170.135  350.76 MiB  256          38.7%             1a7d557b-8270-4181-957b-98f6e2945fd8  rack1
CREATE KEYSPACE grudb WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '3', 'dc2': '2'}  AND durable_writes = true;

这是我的设置。

CL为一。

1 个答案:

答案 0 :(得分:0)

通常,一个10节点的群集可以维持更高的吞吐量,但是,这是否实际上转化为更高的“ cassandra-stress”分数,取决于您在做什么:< / p>

首先,您需要确保cassandra-stress client 不是瓶颈。例如,如果运行cassandra-stress的计算机的CPU或网络利用率为100%,即使您有100个服务器节点,也永远不会获得更好的分数。

第二,您需要确保cassandra-stress的并发性足够高。在极端情况下,如果cassandra-stress仅发送一个请求,另一个请求,您所做的只是测量延迟,而不是吞吐量。此外,如果一次只向一个节点发送一个请求,那么如果您有100个节点,则没有帮助。因此,请尝试增加cassandra-stress的并发性,看看是否有任何区别。

现在,我们已经解决了潜在的卡桑德拉压力问题,让我们看一下服务器。您并没有简单地将群集从1个节点增加到10个节点。如果您只是这样做,那么如果性能没有提高,您将感到惊讶。但是您做了其他事情:您增加了10个节点,但也大大增加了写入的工作-在您的设置中,每次写入都需要到达5个节点(!),其中3个位于DC上,2个位于DC上。另一个(这些是您配置的RF)。因此,即使在最佳情况下,您也不能指望该群集上的写吞吐量比单个节点好两倍以上。实际上,由于此复制的所有开销,您期望性能甚至不到两倍-因此具有相似的性能也就不足为奇了。

以上估计是针对写入性能的。为了提高读取性能,由于您说的是使用CL = ONE(顺便说一句,您可以使用CL = LOCAL_ONE),因此读取吞吐量的确应随群集大小线性增长。如果没有,我猜您在如上所述的设置上有问题(客户端出现瓶颈或使用的并发太少)。

请尝试分别运行读写基准,以更好地了解其中哪些是主要的可扩展性问题。