为什么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低至可以忽略
为什么zookeeper会导致磁盘IO高【转】的更多相关文章
- 磁盘IO概念及优化入门知识
在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不能说了. 读/写IO ...
- 集群瓶颈为什么是磁盘io
阅读本文思考: 1.对磁盘IO了解多少 2.为什么是磁盘IO是瓶颈,有没有自己的答案 想了解磁盘io可以查看此帖:集群瓶颈:磁盘IO必读 (磁盘IO:磁盘输出输出) 集群的瓶颈提出多种看法,其中网络和 ...
- 磁盘IO的概念
转载自:http://blog.csdn.net/letterwuyu/article/details/53542291 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下 ...
- Linux系统 磁盘IO过高排查总结
最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法.此次排查原因的经验可以作下次问题的参考. 1.会看懂 top 系统命令出来的各项参数.此次是无意中发现 u ...
- 一次磁盘IO过高分析过程
1.查看监控,发现整点时间有写IO过高情况
- linux 磁盘io利用率高,分析的正确姿势
一.背景简介 作为一个DBA难免不了会遇到性能问题,那么我们遇到性能问题该如何进行排查呢?例如我们在高并发的业务下,出现业务响应慢,处理时间长我们又该如何入手进行排查,本片文章将分析io高的情况下如何 ...
- 针对系统中磁盘IO负载过高的指导性操作
针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...
- 磁盘IO过高时的处理办法
针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...
- mysql占用磁盘IO过高的解决办法
一.现象 最近发现Mysql服务器磁盘IO一直很高 [root@push-- ~]# iostat -k -d -x Linux -.el7.x86_64 (push--) 2019年07月05日 _ ...
随机推荐
- MacBook快速入门
入职新美大,全面进入Mac工作环境,果断"撸起袖子加油干","浪起来,逼格提起来".顺道提一嘴,这边的兄弟们的干劲是真心足,作为一名老兵痞,必须要虚心向身边NX ...
- SQL server学习(四)T-SQL编程之事务、索引和视图
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...
- Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher
国际惯例的题面:有人说这是回文自动机的板子题,然而我是不会这种东西的.于是,我选择用更一般性的方法去解决这个题,就是那一堆东西了.首先,我们把两个串同时插入一个广义SAM里,拓扑排序维护每个节点的pa ...
- python生成指定文件夹目录树
# -*- coding: utf-8 -*- import sys from pathlib import Path class DirectionTree(object): "" ...
- Altium Designer Summer 09换成中文步骤
1.打开Altium Designer Summer 09软件,在左上角file文件中点击,再打开Preferences出现如下,然后关闭软件在打开就完成了
- java参数转换为javaBean对象
package com.tuxin.tool.json; import flexjson.JSONDeserializer;import flexjson.JSONSerializer;import ...
- java中的synchronized : 模拟取款
1.定义账户类: public class Account { private int balance = 500; public int getBalance() { return balance; ...
- Java 中的“implements Runnable” 和“extends Thread”(转)
知识点 “implements Runnable” 和“extends Thread”的不同 具体分析 最近在学习Android中的Handler消息传递机制时,创建新线程有两种方式:一种是实现Run ...
- [Visual studio] Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法
转载原文:http://www.ynpxrz.com/n1806804c2023.aspx 1.打开VS2017下的Developer Command Prompt for VS 2017 2.然后在 ...
- EF6 简单增删改查示例代码
示例一: private DbContext _dbContext; public DbContext CurrentContext { get { if (_dbContext == null) { ...