Cassandra性能优化的一些小tips
最近,datastax的开发博客上发了一篇文章 How not to benchmark Cassandra (不要这样压测Cassandra),文章说了压测Cassandra时应该避免的几个地方。其实,对于正常使用情况下提升Cassandra的性能,避免某些瓶颈,里面的有些tips还是非常有用的,所以摘录出来,本文并非原文翻译,而是选择了其中几点,并总结了自己优化Cassandra的一些实践,如果有需要,请直接查看链接。
1. 不要在虚拟机上压测
原因就是很容易受同一母机上别的实例的影响,如磁盘,网络等在高峰的时候非常明显。
2. 不要在共享存储的机器上测试
比如Amazon的EBS,延时可能会比较高,而基于LSM结构的cassandra需要两次访问存储(一次是commitlog,另一次是sstable)
3. 要合理配置OS磁盘相关参数
实际上Cassandra是运行在某一OS之上,如果OS中磁盘的参数配置不合理,那么极有可能对Cassandra性能造成消极影响,例如如果OS预加载是32MB,那么Cassandra读1KB的数据就需要读32MB,这是会严重影响性能的。另外,关闭OS的swap对性能会有提升,Datastax提供了一个工具来检测指导这些参数配置,详情猛击: pre-flight check
4. 要正视一些best practices
例如,不要错过 as Shift recently illustrated so well 这些集众家汇聚的经验,jVM和Cassandra设置会让Cassandra运行得更好更快。
5. 记得打开row cache 和key cache
这没啥说的,这两点对于读性能提升很明显,除非您的Cassandra集群对读没啥要求,那么记得打开配置一个合理的参数。
6. 善用ringcache
ringcache源码在org.apache.cassandra.client下,Cassandra中包含有一个对ringcache的测试类,建议看看里面的用法,对于读写性能应该有很大的帮助。
7. 选择合适的读写一致性
如果数据的重要性不是非常高,写是one比quorum要快很多,如果一致性要求不是非常高,就不要用all, local_quorum或者local_one(该一致性级别目前暂未发布,不过有相关的jira了)将会是比较好的选择。
8. 避开Cassandra的一些较弱的地方
例如尽量避免使用嵌套行,尽量别在跨DC中使用强一致性…..等等
非特别说明,均为原创文章,转载请注明: 转载自 邓的博客
本文链接地址: Cassandra性能优化的一些小tips