位置: 编程技术 - 正文

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

  • 进项税额转出补交税款
  • 小产权二手房买卖注意些什么
  • 车辆报废做账务处理依据的法规是
  • 转租价格由谁决定
  • 权责发生制根据产品的生产特点和管理要求结转成本
  • 广告费的明细
  • 会展服务费怎么开票
  • 住宿报销是开普票还是专票
  • 转让不动产取得的收入
  • 公司汽车购置税怎么交
  • 如何查询公司的财务负责人
  • 发票没作废写上作废了怎么办
  • 企业如何列支个人收入
  • 国有企业驻外人员待遇
  • 企业所得税和增值税都要交吗
  • 转租不动产需要预缴增值税吗
  • 与成本直接相关的工资怎么会计处理?
  • 企业购进口汽车会计分录
  • 计算广告的基本运作模式
  • 机票抵扣增值税需要什么凭证
  • 收回代扣社保怎么处理
  • 产值和营业收入哪个数值大
  • 存货入库后的仓储费记录
  • 夫妻房产分割哪家好
  • 合伙企业对外投资
  • 4s店贷款服务费是什么
  • php字符串定义的三种方式
  • linux桌面设置界面在哪
  • 坏账准备怎么做会计科目
  • 时序模型算法
  • 个人所得税的征收模式为()A分类征收B综合征收C
  • 高翔ORB-SLAM2稠密建图编译(添加实时彩色点云地图+保存点云地图)
  • 消费税会计分录完整案例
  • 结转本月完工产品的成本
  • thinkphp上传文件
  • 前端是指什么工作
  • 增值税发票洗烂怎么办
  • 批发商和零售商属于
  • ai引领技术变革是什么
  • php+jQuery+Ajax简单实现页面异步刷新
  • 租房发票怎么缴税
  • 凭样品销售
  • 织梦如何使用
  • 短期借款利息是多少
  • 预缴所得税年底处理账务吗
  • 转让旧固定资产怎么处理
  • 行政事业单位赞助支出会计核算办法
  • 开具专票需要哪些材料
  • 员工话费报销制度
  • 用银行存款支付本季度短期借款利息
  • 公司发放节日礼品
  • 年底本年利润结转错了怎么调
  • 水电费收据能证明什么??
  • 年末本年利润没有结转影响报税吗
  • 施工方怎么开发票
  • 房地产开发企业增值税怎么算
  • 新装mysql设置密码
  • 用心一也的一是什么词类活用
  • linux 图形
  • mac怎么更换用户名和密码
  • 怎么给ubuntu扩容
  • window8系统安装步骤
  • silent.exe - silent是什么进程 有什么用
  • windows 10的回收站在哪里
  • win7系统开机黑屏自检
  • 远程调试linux
  • Node.js中的事件循环是什么样的
  • js日期操作
  • php 时间差
  • linux中使用最多的命令
  • nodejs实现微信公众号发红包
  • dom教学
  • 道路运输业属于工贸行业吗
  • 补充协议交印花税嘛
  • 不想订亲
  • 要深化税收制度改革健全
  • 开票信息哪里查询
  • 遂宁市国家税务局
  • 基层税务稽查具体内容
  • 小企业会计准则会计科目表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设