Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Cassandra二级索引性能缓慢_Performance_Cassandra - Fatal编程技术网

Performance Cassandra二级索引性能缓慢

Performance Cassandra二级索引性能缓慢,performance,cassandra,Performance,Cassandra,我们有一个测试代码模式,它使用java客户机执行Cassandra插入/读取/查询操作。我们已经用物理服务器构建了具有以下配置的单节点设置 操作系统是Linux SuSE 11.SP2 物理服务器上的内存为32GB 交换内存为32GB CPU有4个内核,每个2GHz 提交驻留在100GB SSD磁盘上的日志(RAID-0和本地到系统) 数据日志驻留在SAS磁盘上,容量为7TB(5个SAS磁盘配置为RAID-0,系统本地) JRE版本1.7.0.25 Cassandra版本1.2.5(默认分区)

我们有一个测试代码模式,它使用java客户机执行Cassandra插入/读取/查询操作。我们已经用物理服务器构建了具有以下配置的单节点设置

  • 操作系统是Linux SuSE 11.SP2
  • 物理服务器上的内存为32GB
  • 交换内存为32GB
  • CPU有4个内核,每个2GHz
  • 提交驻留在100GB SSD磁盘上的日志(RAID-0和本地到系统)
  • 数据日志驻留在SAS磁盘上,容量为7TB(5个SAS磁盘配置为RAID-0,系统本地)
  • JRE版本1.7.0.25
  • Cassandra版本1.2.5(默认分区)
  • 最大堆大小8GB
  • 堆大小为400MB(根据Cassandra的建议,每个核100MB)
注意:将CPU从4核增加到8核有助于提高性能,但效果很差

我们使用下面的测试模式,它有5个二级索引

"CREATE TABLE test_table (
  hash_key text PRIMARY KEY,
  ctime timestamp,
  ctime_bucket bigint,
  extension text,
  filename text,
  filename_frag text,
  filesize bigint,
  filesize_bucket bigint,
  hostname text,
  mtime timestamp,
  mtime_bucket bigint
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

CREATE INDEX test_table_ctime_bucket_idx ON test_table (ctime_bucket);
CREATE INDEX test_table_extension_idx ON test_table (extension);
CREATE INDEX test_table_filename_frag_idx ON test_table (filename_frag);
CREATE INDEX test_table_filesize_bucket_idx ON test_table (filesize_bucket);
CREATE INDEX test_table_mtime_bucket_idx ON test_table (mtime_bucket);"
我们正在尝试使用默认调优参数进行以下插入和读取测试,但是我们发现读写性能非常慢。与写入性能相比,读取速度非常慢。当我们从上述模式中删除二级索引时,性能提高了约2倍,但我们仍然认为可以通过调整Cassandra参数来提高性能。但是,使用二级索引时,性能非常差

  • 1M插入提供约7k操作/秒
  • 10M插入提供约5K操作/秒(略微降低性能)
  • 100米插入速度约为每秒5公里
  • 1000MM插入式可提供约4.5K操作/秒
如果删除二级索引,以上列出的所有工作负载的性能大约为11K Ops/sec

  • 1M读取提供大约:4.5k操作/秒
  • 10M读取仅提供大约:225操作/秒(大大降低了性能)
我们想从您的专家团队那里了解,为了获得更好的性能,写操作和读操作需要应用哪些特定的调优参数。我们如何延迟压缩和GC以避免性能瓶颈,而性能瓶颈在这些操作中可能起到一定的作用。如果要应用任何特定于系统的调谐,我们希望从您的专家团队那里了解


我们正在尝试使用以下调优参数(在Cassandra.yaml和Cassandra env.sh中),但是我们在写和读性能方面没有得到太大的改进。

这是一个非常经典的i/o绑定案例,特别是在性能随着较大数据集而下降的情况下。我可以证实这一点

您需要切换到SSD,将机器添加到集群,或者减少工作负载的随机性(提高缓存效率)


编辑:我注意到您在SSD上有commitlog。commitlog是纯粹的顺序写入,因此在SSD上的好处不大。将commitlog放在一个HDD上,而将数据文件放在SSD上。

这是一个相当经典的i/o绑定案例,尤其是在较大数据集的性能下降的情况下。我可以证实这一点

您需要切换到SSD,将机器添加到集群,或者减少工作负载的随机性(提高缓存效率)

编辑:我注意到您在SSD上有commitlog。commitlog是纯粹的顺序写入,因此在SSD上的好处不大。将commitlog放在一个HDD上,将数据文件放在SSD上