由于早期的storm版本心跳信息严重依赖zookeeper,心跳风暴会导致zookeeper的事务日志频繁的写磁盘,带来的问题首当其冲的是磁盘IO会爆掉。

优化思路

将zookeeper事务的日志放入内存中,降低对磁盘的依赖,受内存空间容量限制,需要控制事务日志大小。

这个方案的风险就是一旦机房断电会导致zookeeper中的部分数据丢失,所以特别重要的数据不建议这样做,SSD会是个不错的选择。

方案步骤

  • 事务日志指向内存文件系统dataLogDir=/dev/shm
  • 关闭自动事务日志的管理#autopurge.purgeInterval=1
  • 启用脚本删除历史事务日志以便控制内存的使用

清理事务日志

  1. #!/bin/bash
  2. source /etc/profile
  3. #snapshot file dir
  4. dataDir=/opt/zookeeperdata/version-2
  5. #tran log dir
  6. dataLogDir=/dev/shm/version-2
  7. #leave transaction files
  8. leaveTran=10
  9. #leave snapshot files
  10. leaveSnap=10000
  11. echo ""
  12. echo ""
  13. echo "before purge memory:"
  14. free -m
  15. ls -t $dataLogDir/log.* | tail -n +$leaveTran  | xargs rm -f
  16. ls -t $dataDir/snapshot.* | tail -n +$leaveSnap | xargs rm -f
  17. echo "after purge memory:"
  18. free -m

zookeeper配置

  1. dataDir=/opt/zookeeperdata
  2. dataLogDir=/dev/shm
  3. #自动清理时保存在datadir里的数据快照数。最小值3
  4. #autopurge.snapRetainCount=3
  5. #自动清理任务的间隔小时数
  6. #autopurge.purgeInterval=1
  7. # 每当10000条事务日志写入时,创建snapshot文件
  8. snapCount=10000

磁盘IO低至可以忽略

为什么zookeeper会导致磁盘IO高【转】的更多相关文章

  1. 磁盘IO概念及优化入门知识

    在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不能说了. 读/写IO ...

  2. 集群瓶颈为什么是磁盘io

    阅读本文思考: 1.对磁盘IO了解多少 2.为什么是磁盘IO是瓶颈,有没有自己的答案 想了解磁盘io可以查看此帖:集群瓶颈:磁盘IO必读 (磁盘IO:磁盘输出输出) 集群的瓶颈提出多种看法,其中网络和 ...

  3. 磁盘IO的概念

    转载自:http://blog.csdn.net/letterwuyu/article/details/53542291 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下 ...

  4. Linux系统 磁盘IO过高排查总结

    最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...

  5. 一次磁盘IO过高分析过程

    1.查看监控,发现整点时间有写IO过高情况

  6. linux 磁盘io利用率高,分析的正确姿势

    一.背景简介 作为一个DBA难免不了会遇到性能问题,那么我们遇到性能问题该如何进行排查呢?例如我们在高并发的业务下,出现业务响应慢,处理时间长我们又该如何入手进行排查,本片文章将分析io高的情况下如何 ...

  7. 针对系统中磁盘IO负载过高的指导性操作

    针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...

  8. 磁盘IO过高时的处理办法

    针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...

  9. mysql占用磁盘IO过高的解决办法

    一.现象 最近发现Mysql服务器磁盘IO一直很高 [root@push-- ~]# iostat -k -d -x Linux -.el7.x86_64 (push--) 2019年07月05日 _ ...

随机推荐

  1. coalesce :返回参数(列名)中第一个非NULL值的字段值

    示例 下面的语句返回值 34.(只返回一个值就算后面不为NULL也直接丢弃) SELECT COALESCE( NULL, 34, 13, 0 ) 备注 如果所有参数均为 NULL,则 COALESC ...

  2. 障碍路线Obstacle Course

    P1649 [USACO07OCT]障碍路线Obstacle Course 裸的dfs,今天学了一个新招,就是在过程中进行最优性减枝. #include<bits/stdc++.h> us ...

  3. C#获得窗口控件句柄

    /*整个Windows编程的基础.一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条, ...

  4. 5288: [Hnoi2018]游戏

    5288: [Hnoi2018]游戏 链接 分析: 考虑y<=x的怎么做,那么只能从左边走到右边.我们可以从最右边的点开始,一次确定每个点往右边可以走多少. L[x],R[x]分别是x向左向右最 ...

  5. BZOJ.3531.旅行(树链剖分 动态开点)

    题目链接 无优化版本(170行): /* 首先树剖可以维护树上的链Sum.Max 可以对每个宗教建一棵线段树,那这题就很好做了 不过10^5需要动态开点 (不明白为什么nlogn不需要回收就可以 不是 ...

  6. The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files

    我的方法:是缺少servlet的引用库,解决如下 1.工程右键-properties->java build path 2.在java build path的libraries tab页中选择A ...

  7. PHP 利用QQ邮箱发送邮件「PHPMailer」

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

  8. ubuntu.windows桌面远程ubuntu的方法(附带安装图形桌面--可选)

    (1)首先通过Windows系统下连接Linux系统的命令行工具连接Ubuntu服务器,(工具:xshell,securecrt,putty等). (2)通过Windows下工具连接到Linux操作系 ...

  9. javascript 原生常用api 数组方法大全

     <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. ASP.NET Web API实现缓存的2种方式

    在ASP.NET Web API中实现缓存大致有2种思路.一种是通过ETag, 一种是通过类似ASP.NET MVC中的OutputCache. 通过ETag实现缓存 首先安装cachecow.ser ...