我现在和Cassandra合作了一段时间,并且已经按照以下链接中的基准测试提示进行了操作:
http://www.datastax.com/dev/blog/how-not-to-benchmark-cassandra
我有4个运行Cassandra的节点,以及2个不同的节点,使用本机基准测试工具'cassandra-stress'为集群提供服务。我理解,因为Cassandra的LSM性质写道,它们几乎不会成为IO绑定但是在读取时我预计我将能够以这样的方式强调集群,它将是IO绑定的。到目前为止,我一直无法接近使IO成为瓶颈。
我增加了并发写/读的次数;我增加了stream_throughput_outbound_megabits_per_sec所以它不会加油;我已经将cassandra-stress客户端的数量增加了3倍(这使得它更加受CPU限制)。
我在每个Cassandra节点上的设置是commitLogs的单独HDD,我为数据存储设置了10个驱动器DAS。我用Linux的iostat实用程序监视了IO,我永远无法将驱动器的利用率提高到接近100%。此外,我已经减少了可用于Cassandra的可用内存,这会使其更频繁地冲洗。以下是我如何启动写压力测试:
cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_write_1& cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_write_2& cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_write_3&
以下是我如何启动读压力测试:
cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_read_1 -o read& cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_read_2 -o read& cassandra-stress -d 192.168.2.1,192.168.2.2 -n 20000000 -t 400 -f 20million_read_3 -o read&
我是从2个外部节点执行此操作的,这些节点正在为4节点的Cassandra集群提供服务。
关于如何有效地强调IO并使其受IO约束的任何想法或想法?或者可能我在这里做错了什么?
感谢您的时间和耐心。
-Matt
答案 0 :(得分:0)
单独的提交日志磁盘和10个数据磁盘..您正在“正确行事”。
您可以尝试使用较大值的混合读取和写入工作负载来尝试增加总体I / O,但您可能会再次发现这在您的硬件选择上运行良好。