位置: 编程技术 - 正文

当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法

编辑:rootadmin

推荐整理分享当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

最近同事反映,在使用pt-heartbeat监控主从复制延迟的过程中,如果master down掉了,则pt-heartbeat则会连接失败,但会不断重试。

重试本无可厚非,毕竟从使用者的角度来说,希望pt-heartbeat能不断重试,直到重新连接上数据库。但是,他们发现,不断的重试会带来内存的缓慢增长。

重现

环境:

pt-heartbeat v2.2.,MySQL社区版 v5.6.,Perl v5..1,RHEL 6.7,内存M

为了避免数据库启停对pt-heartbeat内存使用率的影响,故MySQL和pt-heartbeat分别运行在不同的主机上。

运行pt-heartbeat

# pt-heartbeat --update -h ... -u monitor -p monitor -D test --create-table

监控pt-heartbeat的内存使用率

获取pid

查看该进程的内存使用率

# top -p

运行了0:.(TIME+列),MEM一直稳定在3.3%

现关闭数据库

# service mysqld stop

刚才的pt-heartbeat命令不断输出以下信息

同样CPU时间后,MEM增长到4.4%, 增长了1%,考虑到内存M,该进程的内存占用增加了5M,虽然不是很多,但考虑到进程的内存增加并没有停止的意思,这个现象还是要引起注意的。

当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法

同时,通过pmap命令,发现,地址的RSS和Dirry也会增长,增长的速率是4k/s

后来研究pt-heartbeat的源码,才发现代码有点bug

以上代码摘自get_dbh函数,用于获取数据库的连接,如果获取失败,则重试1次,然后通过die函数抛异常退出。

但是,通过设置如下断点,发现当$tries为0时,if函数里面的PTDEBUG && _d("$EVAL_ERROR")语句能执行,但die函数就是没有抛出异常,并退出脚本

后来,将上述代码的最后一个if函数修改如下:

再次测试

启动数据库

# service mysqld start

执行pt-heartbeat命令

# pt-heartbeat --update -h ... -u monitor -p monitor -D test --create-table

停止数据库

# service mysqld stop

刚才执行的pt-heartbeat命令异常退出

“test:”就是加入的测试字符。

结论

很奇怪,只是单纯的die $EVAL_ERROR不会抛出异常,并退出脚本,但修改后的die "test:$EVAL_ERROR"却会退出脚本。

很显然,这确实是个bug,不知道是不是与perl的版本有关。

很好奇,失败的连接如何导致内存的不断增长?

最后,给percona官方提了个bug

down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

SQL Server 树形表非循环递归查询的实例详解 很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL或以上版本就能用别的语法进行查询,下面是示例。--通过子

SQL Server 安装后服务器名称找不到的解决办法 网上说使用localhost即可,确实没错,但是有的仍旧会报出无法找到错误,我在无法通过的时候又重新安装了SQLServer,这次选中全部默认安装,之前使用

利用SQL Server数据库邮件服务实现监控和预警 背景现在越来越多的企业、公司要求对于数据库实现7*小时的数据库监控,一般情况下采用的就是第三方的平台来实现邮件和手机短信的监测提醒。前

标签: 当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法

本文链接地址:https://www.jiuchutong.com/biancheng/318958.html 转载请保留说明!

上一篇:SQL SERVER 9003错误解决方法(sql2000错误9003)

下一篇:SQL Server 树形表非循环递归查询的实例详解(sql查询树状数据)

  • 申报增值税附加税减免项目选错了
  • 增值税专用发票有效期是多长时间
  • 股权转让个人所得税如何计算
  • 发票开具就能做账了吗
  • 招聘预算费用包括哪些预算清单
  • 企业购进材料入什么账户
  • 服装类发票可以做账吗
  • 同产品不同单价能相加开票吗
  • 单式记账法是什么意思呀
  • 厂房消防安装图
  • 关于免租金的法律规定
  • 不同的征税主体对同一纳税人
  • 印花税是当月交还是次月交
  • 公司的钱怎么提现
  • 股东可以以知识产权作价出资吗
  • 财政票据税务局能查到吗
  • 幼儿园开发成本
  • 运输公司租赁车辆怎么做账
  • 网卡和网线都正确接法
  • 或有事项确认预计负债的分录
  • 生产经营所得个税表
  • 财务软件的摊销额计入管理费用
  • 企业所得税汇算清缴补缴税款分录
  • PHP:pg_result_error()的用法_PostgreSQL函数
  • 托收账款属于什么会计科目
  • 雨林木风u盘pe装系统教程
  • 解决的英文
  • 吃鸡到底用什么显卡性价比最高?
  • 酒水入库的会计分录怎么做
  • 增值税流转税是什么意思
  • php rest api
  • 邓弗里斯什么水平
  • 计提的福利费怎么处理
  • 文心一格百度
  • yolov5 output
  • 微软和梅赛德斯奔驰宣布合作
  • 收购发票的开具管理
  • 收到银行存款利息计入什么科目
  • 发票已开不确认收入可以吗?
  • 年金现值系数和复利现值系数的公式
  • phpcms视频教程
  • mysql内连接查询使用汉语作为官方语言的所有国家
  • 企业收购合并中土地问题
  • 金蝶k3开票
  • 应交增值税的计算要加已交税金还是扣除
  • 发票校验码被章盖住了
  • sql删除表中的某一行
  • 处置无形资产属于投资活动吗
  • 存货跌价准备的账务处理
  • 应收账款计提的坏账准备可以转回
  • 我国现行资源税主要采用什么税率
  • 行政事业单位零星维修相关规定
  • 免抵退 免退
  • 如何计算递延所得税资产余额
  • 企业相关成本费用有哪些
  • 出口退税计算公式
  • 固定资产房屋拆除后如何做帐务处理
  • 因质量原因无法退货
  • 会计账簿按外表可分为
  • sqlserver not in 语句使程充崩溃
  • 在linux操作系统中,/etc/rc.d/init.d
  • 如何进入opencore引导
  • Win10系统开机出现问题pin码不可用
  • win xp怎么样
  • vnetd.exe
  • iis搭建php环境
  • CentOS 6.x 到 CentOS 7 的升级过程
  • 如何使用u盘安装linux
  • 常用的linux系统版本有哪些
  • Unity3D游戏开发培训课程大纲
  • border:none与border:0使用区别
  • jquery实现
  • android下拉刷新上拉加载
  • apache使用端口
  • css hacks
  • 给一个接口,然后怎么在vue里面调用
  • three. js
  • JavaScript中的复杂数据类型又称为
  • unity地形图片
  • 个人所得税app什么时候能查到月收入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设