解决zookeeper磁盘IO高的问题
程序员文章站
2022-06-26 20:01:43
...
为什么zookeeper会导致磁盘IO高
由于早期的storm版本心跳信息严重依赖zookeeper,心跳风暴会导致zookeeper的事务日志频繁的写磁盘,带来的问题首当其冲的是磁盘IO会爆掉。
优化思路
将zookeeper事务的日志放入内存中,降低对磁盘的依赖,受内存空间容量限制,需要控制事务日志大小。
这个方案的风险就是一旦机房断电会导致zookeeper中的部分数据丢失,所以特别重要的数据不建议这样做,SSD会是个不错的选择。
方案步骤
- 事务日志指向内存文件系统dataLogDir=/dev/shm
- 关闭自动事务日志的管理#autopurge.purgeInterval=1
- 启用脚本删除历史事务日志以便控制内存的使用
清理事务日志
#!/bin/bash source /etc/profile #snapshot file dir dataDir=/opt/zookeeperdata/version-2 #tran log dir dataLogDir=/dev/shm/version-2 #leave transaction files leaveTran=10 #leave snapshot files leaveSnap=10000 echo "" echo "" echo "before purge memory:" free -m ls -t $dataLogDir/log.* | tail -n +$leaveTran | xargs rm -f ls -t $dataDir/snapshot.* | tail -n +$leaveSnap | xargs rm -f echo "after purge memory:" free -m
zookeeper配置
dataDir=/opt/zookeeperdata dataLogDir=/dev/shm #自动清理时保存在datadir里的数据快照数。最小值3 #autopurge.snapRetainCount=3 #自动清理任务的间隔小时数 #autopurge.purgeInterval=1 # 每当10000条事务日志写入时,创建snapshot文件 snapCount=10000
磁盘IO低至可以忽略