zookeeper服务优化
2015-12-02 22:00
253 查看
1.快照文件和事务日志文件分别挂在不同磁盘。zoo.cfg文件中,dataDir是存放快照数据的,dataLogDir是存放事务日志的。zookeeper更新操作过程:先写事务日志,再写内存,周期性落到磁盘(刷新内存到快照文件)。事务日志的对写请求的性能影响很大,保证dataLogDir所在磁盘性能良好、没有竞争者。
2. 默认jvm没有配置Xmx、Xms等信息,可以在conf目录下创建java.env文件(内存堆空间一定要小于机器内存,避免使用swap)
export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
3. 按天出zookeeper日志,避免zookeeper.out文件过大。
zkEnv.sh文件日志输出方式从CONSOLE改为ROLLINGFILE;
conf/log4j.properties设置为按天生成文件DailyRollingFileAppender
4. zoo.cfg文件中skipACL=yes,忽略ACL验证,可以减少权限验证的相关操作,提升一点性能。
5. zoo.cfg文件中forceSync=no,这个对写请求的性能提升很有帮助,是指每次写请求的数据都要从pagecache中固化到磁盘上,才算是写成功返回。当写请求数量到达一定程度的时候,后续写请求会等待前面写请求的forceSync操作,造成一定延时。如果追求低延时的写请求,配置forceSync=no,数据写到pagecache后就返回。但是机器断电的时候,pagecache中的数据有可能丢失。
默认为forceSync=yes,为yes可以设置fsync.warningthresholdms=50 如果数据固化到磁盘的操作fsync超过50ms的时候,将会在zookeeper.out中输出一条warn日志(forceSync=yes有效)。
6. globalOutstandingLimit=100000 客户端连接过多,限制客户端请求,避免OOM
7. zoo.cfg文件中preAllocSize=64M 日志文件预分配大小; snapCount=100,000 多少次写事务,生成一个快照如果快照生成频繁可适当调大该参数。
一般zk的应用提倡读大于写,性能较好(10:1),存储元数据用来协调分布式数据最终一致。写过于频繁使用缓存更好
8. 日志文件自动清除(如果追求性能,可手动清除)
autopurge.snapRetainCount=3 # The number of snapshots to retain in dataDir
autopurge.purgeInterval=24 # Purge task interval in hours Set to "0" to disable auto purge feature
2. 默认jvm没有配置Xmx、Xms等信息,可以在conf目录下创建java.env文件(内存堆空间一定要小于机器内存,避免使用swap)
export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
3. 按天出zookeeper日志,避免zookeeper.out文件过大。
zkEnv.sh文件日志输出方式从CONSOLE改为ROLLINGFILE;
if [ "x${ZOO_LOG4J_PROP}" = "x" ] then # ZOO_LOG4J_PROP="INFO,CONSOLE" ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi
conf/log4j.properties设置为按天生成文件DailyRollingFileAppender
#zookeeper.root.logger=INFO, CONSOLE zookeeper.root.logger=INFO, ROLLINGFIL
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd # Max log file size of 10MB #log4j.appender.ROLLINGFILE.MaxFileSize=10MB
4. zoo.cfg文件中skipACL=yes,忽略ACL验证,可以减少权限验证的相关操作,提升一点性能。
5. zoo.cfg文件中forceSync=no,这个对写请求的性能提升很有帮助,是指每次写请求的数据都要从pagecache中固化到磁盘上,才算是写成功返回。当写请求数量到达一定程度的时候,后续写请求会等待前面写请求的forceSync操作,造成一定延时。如果追求低延时的写请求,配置forceSync=no,数据写到pagecache后就返回。但是机器断电的时候,pagecache中的数据有可能丢失。
默认为forceSync=yes,为yes可以设置fsync.warningthresholdms=50 如果数据固化到磁盘的操作fsync超过50ms的时候,将会在zookeeper.out中输出一条warn日志(forceSync=yes有效)。
6. globalOutstandingLimit=100000 客户端连接过多,限制客户端请求,避免OOM
7. zoo.cfg文件中preAllocSize=64M 日志文件预分配大小; snapCount=100,000 多少次写事务,生成一个快照如果快照生成频繁可适当调大该参数。
一般zk的应用提倡读大于写,性能较好(10:1),存储元数据用来协调分布式数据最终一致。写过于频繁使用缓存更好
8. 日志文件自动清除(如果追求性能,可手动清除)
autopurge.snapRetainCount=3 # The number of snapshots to retain in dataDir
autopurge.purgeInterval=24 # Purge task interval in hours Set to "0" to disable auto purge feature
相关文章推荐
- MySQL 优化
- Google排名优化的几个影响因素
- DB2优化(简易版)
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
- C#中尾递归的使用、优化及编译器优化
- 对优化Ruby on Rails性能的一些办法的探究
- 优化Ruby脚本效率实例分享
- Asp编码优化技巧
- 如何监测和优化OLAP数据库
- mysql -参数thread_cache_size优化方法 小结
- 详解mysql的limit经典用法及优化实例
- 数据库学习建议之提高数据库速度的十条建议
- oracle数据库sql的优化总结
- SQL优化经验总结
- SQL优化技巧指南
- SQL Server优化50法汇总
- C++快速排序的分析与优化详解
- 手把手教你如何优化C语言程序
- mysql 分页优化解析
- 非常不错的MySQL优化的8条经验