`
woodding2008
  • 浏览: 284245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决zookeeper磁盘IO高的问题

阅读更多

 

为什么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低至可以忽略

 

  • 大小: 13.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics