位置: 编程技术 - 正文

当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查询树状数据)

  • 境外培训费计入关税完税价格
  • 进项税大于销项税需要交附加税吗
  • 未开发票如何确认收入并进行申报
  • 医疗单位门诊收费票据是发票吗
  • 结转存货跌价准备冲减主营业务成本
  • 非税收入票据能报销吗
  • 个体户经营税收政策
  • 销货清单是否需盖章
  • 红线范围外增加的工程量
  • 别墅一般送车库吗
  • 营业成本利润率降低说明什么
  • 进行利润分配时必须遵循的原则
  • 报关单报关没做收入怎么办
  • 外地扣缴的个人所得税
  • 货物赔偿款会计分录
  • 出租包装物没收押金
  • 如何确认是否要割包皮
  • 一般纳税人有哪些费用
  • 税务稽查是什么
  • 小规模纳税人自来水税率
  • 城市维护建设税属于什么税种
  • 微信收付款认证
  • 平均年限法如何计算
  • 进项税额转出会计分录月末如何结转
  • 不合规发票有哪些风险
  • 以前年度多计提了税金怎么办
  • 增值税应税劳务的纳税人是什么意思
  • 苹果14promax电池掉电很快
  • 车辆理赔款计入什么科目
  • 局域网的工作模式及特点
  • 为什么windows10关机后自动开机
  • php中字符串函数
  • 耕地占用补贴标准
  • 公司注销职工安置方案
  • 公司转让使用过的汽车要交哪些税费
  • 现行小规模纳税人增值税税率
  • 财务运作规律
  • 微信小程序如何删除
  • AIGC之GPT-4:GPT-4的简介(核心原理/意义/亮点/技术点/缺点/使用建议)、使用方法、案例应用(计算能力/代码能力/看图能力等)之详细攻略
  • deformable detr代码
  • php时间代码
  • 企业餐具属于流动资产吗
  • 政府返回税款是否计入收入
  • 小规模纳税人广告税率是多少
  • abs函数python怎么用
  • MySQL中distinct与group by之间的性能进行比较
  • 进项税额转出冲减进项税额吗
  • 股息红利所得为什么按照分配所得的企业所在地确定
  • 上年结转库存现金会计分录
  • 房屋消防工程
  • 消防设备要多少钱
  • 记账凭证应具备的基本内容包括
  • 应收账款借方余额
  • 未收到货款发票是什么意思
  • 网络销售平台有哪些平台
  • 银行期初余额录少了怎么办
  • 合并报表六大抵消分录CPA
  • 工程怎么做会计分录
  • 库存商品与存货总额之比
  • 盘盈的固定资产按什么入账
  • linux系统转换为win系统脚本
  • mac如何访问win10文件
  • win10系统预览版
  • Win10 Mobile/PC RS2快速预览版14926同步推送
  • 从哪里看windows是多少位的
  • win7系统损坏无法开机怎么重装
  • node.js中module.exports与exports用法上的区别
  • shell脚本指南
  • javascript类的继承
  • js控制display属性
  • node中的ejs
  • js根据对象的key来获取对应值
  • 详解Python装饰器由浅入深
  • unity灯光闪烁效果
  • 工具类的作用
  • python之父推荐的书
  • jquery绑定click的方法有几种
  • 装修时候需要交什么费
  • 税务局查帐怎么查
  • 对金融机构与小型企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设