Cassandra部分参数调优

优化一:commitlog文件

由于客户端写数据时需要阻塞写commitlog(默认64GB),所以可以把commitlog放在SSD或者较为空闲的盘中。执行一次刷操作成功后,commitlog文件将被删除。

commitlog_directory

 

优化二:data文件

最好把data文件和commitlog放在两个不同的硬盘中,确保data不会和commitlog争抢IO时间。可配置多个。

data_file_directories

 

优化三:回复超时时间

代表cassandra在等待其他节点响应的最大失败时间,在cassandra.yaml中,rpc_timeout_in_ms,默认是5s,如果网络不好或者数据量较大的情况下,可以适当调大改时间。

 

优化四:commitlog_sync

Cassandra按照特定的时间间隔,将数据持久化,默认是periodic,可能会丢失数据。改为batch时,在数据持久化到磁盘上时,会阻塞写操作会造成性能下降。同时改为batch是需要给CommitLogSyncBatchWindowInMS一个合理的值。

 

优化五:memtable

在写入磁盘之前每个列族的数据都会先写入一个单独的memtable中,memtable的大小由binary_memtable_throughput_in_mb控制。

同时还有memtable_throughput_in_mb,这是代表memtable被刷到磁盘之前可以存储的最大列数。默认是0.3,大约333000。

通过memtable_flush_after_mins设置,当memtable被刷到磁盘之后可以保留多久。

在memtable刷到磁盘之前,先会写入到一个缓冲区里,可以使用flush_data_buffer_size_in_mb(默认:32M)控制。

通过memtable_flush_writers(默认:1)设置memtable写入磁盘时所需要使用的线程数量,如果堆设置的比较大,我们可以调高这个值。

 

优化六:写操作并发

Cassandra的写入性能高于读取性能,其中可以通过:concurrent_writes来修改Cassandra的写入操作的执行线程数量,这个应该设置为未来将会并发连接到服务器的客户端的数量。

 

优化七:读操作并发

Cassandra的读取性能可以通过:concurrent_reads来修改Cassandra的写入操作的执行线程数量,以提高读取性能,每个核对应两个线程最好,比如说8核的物理机应该配置16个读线程。

 

优化八:缓存

注意,缓存可能会占用相当大的内存,应该根据使用情况来小心的调整他们。

缓存分为行缓存和键缓存。

行缓存会缓存整行数据,因此他会包含键缓存,设置了行缓存就不需要设置键缓存。

缓存策略确定条件:

  1. 考虑查询,使用更适合查询方式的缓存类型。
  2. 考虑堆存和缓存的比例,不要让缓存占满堆容量。
  3. 考虑行和键值的大小,通常键的大小比行小。

键缓存

keys_cached是设置存储在内存之中的键位置的数量而不是键值的数量。这个值可以指定一个小数或一个整数。小数是指定了一个要缓存的键值的百分比,如果使用了一个整数,则是指定将要缓存的键值位置的绝对数值。

行缓存

rows_cached是设置Cassandra中缓存的行数。默认是0,如果使用小数则是全部数据的百分比,如果是整数则要缓存一个绝对值。

 

优化九:缓冲区

在优化五中有一条关于缓冲区的优化配置,还有如下配制:flush_index_buffer_size_in_mb(默认8M),如果每个key之定义了很少的列则可以考虑增加该配置的大小,相反则减少。

 

优化十:JVM

最大和最小堆

 在Cassandra中垃圾回收期采用的是CMS垃圾回收器,在这里最大、最小堆应该设置为相同的值。

最大内存: max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))

新生代大小:min(100M * num_cores, 1/4 * max heap size)

176414M 1024M      88207M 8192M       8192M

100*56,2048                          2048M

 

新生代和老年代

新生代:Eden区、From区、to区的占比是: 8:1:1

老年代:新生代 = 2:1

由于Cassandra中很多对象会长期存在所以增加old区占比是合适的。

MaxTenuringThreshold(默认:1)新生代对象会在from区和to区来回复制这个复制会造成性能的开销,可以将其改为0,代表存活过一次gc的新生代对象直接进入老年代。

取消偏向锁

在热点发生时会有许多争抢锁的情况,偏向锁适得其反。关闭:JVM_OPTS="$JVM_OPTS -XX:-UseBiasedLocking"

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值