我正在使用cassandra 2.0,我创建了一个如下所示的列族:
CREATE TABLE user_id_timestamp_index (
user_id int,
timestamp text,
PRIMARY KEY (user_id, timestamp)
) 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
index_interval=128 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='NONE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'LeveledCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
我已经写了超过200万行到这个表没有任何问题,我也执行了很多删除。
问题在快速连续大约10k左右删除后出现,我开始遇到大量的rpc_timeouts。在此期间,通过cqlsh简单地“从user_id_timestamp_index中删除user_id = 5 AND timestamp ='12345'”。
我注意到并尝试过的事情:
我的问题是,我可以调整配置吗?例如,解决方案是每隔5分钟简单地强制在该列族上进行记忆刷新吗?减少此表上的写入负载?一种更快写入和减少挂起阶段的方法?或者有更好的解决方案吗?
答案 0 :(得分:0)
如果您遇到GC压力(您可以通过日志中的GCInspector行告知),您可以通过调整memtable_total_space_in_mb
中的cassandra.yaml
来减少memtables使用的内存量。您可能还需要reduce the key or row cache settings来代替。