(原创)Cassandra数据库的优化总结
来源:互联网 发布:mac usb接口没反应 编辑:程序博客网 时间:2024/06/07 06:50
(原创)Cassandra数据库的优化总结
[TOC]
实验室的源代码分析系统的Cassandra数据库优化过程从十一放假开学起cassandra一直出现的超时,崩溃等一系列问题就一直得不到解决。现在已经解决,把解决过程记录与此。
0x01:分析原因
起初分析原因,认为是一些基础设置不够到位,例如cassandra.yaml等配置不够好。因为cassandra不只是查询速度慢,其他操作例如插入之类的也会出现链接失败的错误,因此第一步主要优化Linux和JVM设置。
0x02:优化Linux:
(1)下载jemalloc
一个在内存分配上比linux自带的malloc(ptmalloc)要优秀的分配工具。
Github地址:https://github.com/jemalloc/jemalloc
下载release版本之后,
解压
./configure
Make
Make install
即可安装完毕。
(2)关闭swap
最大限度的使用物理内存:
/etc/sysctl.conf
完成之后保存,执行sysctl -p 令其生效。
0x03:接下来优化JVM的配置:
Cassandra是用java语言开发的,可以通过修改JVM的配置来进行优化:
JVM配置在cassandra-evn.sh中:
/usr/local/apache-cassandra-3.9/conf/cassandra-evn.sh
添加如下两行,第一行是优化线程压缩级别,减少内存占用。
第二行是使用压缩后的指针,这一条仅仅在x64位机器上有用。
0x04:Cassandra本身的配置:
/usr/local/apache-cassandra-3.9/conf/cassandra.yaml
并发数目一般来说按照默认读写就可以。(8*num_cores=32)
disk_access_mode: mmap
使用内存映射的方法来进行文件IO,而不是传统的流式读写。
write性能提升5%
memtable_allocation_type: offheap_objects
0x05经过以上的配置之后,重启数据库,同时重启工作系统发现可以运行一段时间,但是之后又出现了崩溃。
针对工作系统和数据库的log进行分析,发现最初的问题产生源于一条数据库查询:
这个数据库查询函数出现了查询超时导致的cassandra内部崩溃,从而导致后来的一系列异常。
0x06:
因此针对其中的两条SQL语句进行数据库优化,添加二级索引:
针对project的优化
针对file的优化
完成索引添加之后,数据库再未出现崩溃的现象。今后如果在此出现也可以通过0x06里面分析出来的瓶颈进行针对性的进一步优化。
参考资料:
(1) cassandra官方文档
(2) Cassandra操作和性能优化 http://eric100.blog.51cto.com/2535573/1770036
- (原创)Cassandra数据库的优化总结
- Cassandra分布式数据库框架总结
- cassandra 数据库的使用
- Cassandra数据库设计与维护总结
- Oracle数据库优化的总结
- cassandra数据库
- cassandra 数据库
- 关系数据库的查询优化策略----总结了一些查询优化的方法,希望可以对大家有所帮助(原创)
- 网站优化适用的原创内容规则总结
- 关于首屏性能优化的总结【原创】
- 关于首屏性能优化的总结【原创】
- 关于首屏性能优化的总结【原创】
- 关于首屏性能优化的总结【原创】
- 关于首屏性能优化的总结【原创】
- 关于首屏性能优化的总结【原创】
- 详解NoSQL数据库Apache Cassandra的配置
- 图片存储到cassandra数据库的方案
- 数据库查询优化的一些总结
- JDBC笔记—对数据库进行增删查改
- collection类的工具类,collections,二分查找,折半查找,collections的常用方法,MAP的使用,
- 在Eclipse添加Android兼容包( v4、v7 appcompat )
- 欢迎使用CSDN-markdown编辑器
- vector中的capacity、size的区别
- (原创)Cassandra数据库的优化总结
- matlab画图固定坐标轴范围
- hive 内置函数
- ZOJ1145
- oracle的引用型和记录型
- Q
- 2017-10-26工作
- 我的个人简历——swiper
- 数值分析-拉格朗日插值法python3实现绘图