好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法

當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法

熱門標簽:電話機器人怎么代理商 家庭農場地圖標注名稱怎樣起名 千呼電話機器人可以試用嗎 我要地圖標注數量有限制嗎 零成本地圖標注賺錢 安卡拉地圖標注app 400電話辦理泰安 互聯網電話外呼系統 電銷需要外呼系統嗎

最近同事反映,在使用pt-heartbeat監控主從復制延遲的過程中,如果master down掉了,則pt-heartbeat則會連接失敗,但會不斷重試。

重試本無可厚非,畢竟從使用者的角度來說,希望pt-heartbeat能不斷重試,直到重新連接上數據庫。但是,他們發現,不斷的重試會帶來內存的緩慢增長。

重現

環境:

pt-heartbeat v2.2.19,MySQL社區版 v5.6.31,Perl v5.10.1,RHEL 6.7,內存500M

為了避免數據庫啟停對pt-heartbeat內存使用率的影響,故MySQL和pt-heartbeat分別運行在不同的主機上。

運行pt-heartbeat

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

監控pt-heartbeat的內存使用率

獲取pid

# ps -ef |grep pt-heartbeat
root 1505 1471 0 19:13 pts/0 00:00:08 perl /usr/local/bin/pt-heartbeat --update -h 192.168.244.10 -u monitor -p monitor123 -D test --create-table
root 1563 1545 2 19:50 pts/3 00:00:00 grep pt-heartbeat

查看該進程的內存使用率

# top -p 1505

運行了0:15.00(TIME+列),MEM一直穩定在3.3%

現關閉數據庫

# service mysqld stop

剛才的pt-heartbeat命令不斷輸出以下信息

同樣CPU時間后,MEM增長到4.4%, 增長了1%,考慮到內存500M,該進程的內存占用增加了5M,雖然不是很多,但考慮到進程的內存增加并沒有停止的意思,這個現象還是要引起注意的。

同時,通過pmap命令,發現,0000000001331000地址的RSS和Dirry也會增長,增長的速率是4k/s

后來研究pt-heartbeat的源碼,才發現代碼有點bug

my $tries = 2;
while ( !$dbh  $tries-- ) {
PTDEBUG  _d($cxn_string, ' ', $user, ' ', $pass,
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
if ( !$dbh  $EVAL_ERROR ) {
if ( $EVAL_ERROR =~ m/locate DBD\/mysql/i ) {
die "Cannot connect to MySQL because the Perl DBD::mysql module is "
. "not installed or not found. Run 'perl -MDBD::mysql' to see "
. "the directories that Perl searches for DBD::mysql. If "
. "DBD::mysql is not installed, try:\n"
. " Debian/Ubuntu apt-get install libdbd-mysql-perl\n"
. " RHEL/CentOS yum install perl-DBD-MySQL\n"
. " OpenSolaris pgk install pkg:/SUNWapu13dbd-mysql\n";
}
elsif ( $EVAL_ERROR =~ m/not a compiled character set|character set utf8/ ) {
PTDEBUG  _d('Going to try again without utf8 support');
delete $defaults->{mysql_enable_utf8};
}
if ( !$tries ) {
die $EVAL_ERROR;
}
}
}

以上代碼摘自get_dbh函數,用于獲取數據庫的連接,如果獲取失敗,則重試1次,然后通過die函數拋異常退出。

但是,通過設置如下斷點,發現當$tries為0時,if函數里面的PTDEBUG _d("$EVAL_ERROR")語句能執行,但die函數就是沒有拋出異常,并退出腳本

PTDEBUG  _d($tries);
if ( !$tries ) {
PTDEBUG  _d("$EVAL_ERROR"); 
die $EVAL_ERROR; }

后來,將上述代碼的最后一個if函數修改如下:

if ( !$tries ) {
die "test:$EVAL_ERROR";
}

再次測試

啟動數據庫

# service mysqld start

執行pt-heartbeat命令

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

停止數據庫

# service mysqld stop

剛才執行的pt-heartbeat命令異常退出

“test:”就是加入的測試字符。

結論

很奇怪,只是單純的die $EVAL_ERROR不會拋出異常,并退出腳本,但修改后的die "test:$EVAL_ERROR"卻會退出腳本。

很顯然,這確實是個bug,不知道是不是與perl的版本有關。

很好奇,失敗的連接如何導致內存的不斷增長?

最后,給percona官方提了個bug

https://bugs.launchpad.net/percona-toolkit/+bug/1629164

以上所述是小編給大家介紹的當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

您可能感興趣的文章:
  • 詳解spring boot使用@Retryable來進行重處理
  • Spring Cloud重試機制與各組件的重試總結
  • 詳解Spring Cloud Zuul重試機制探秘
  • Java編程Retry重試機制實例詳解

標簽:池州 黃山 濱州 新鄉 大同 文山 東營 來賓

巨人網絡通訊聲明:本文標題《當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法》,本文關鍵詞  當,master,down,掉后,pt-heartbeat,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法》相關的同類信息!
  • 本頁收集關于當master down掉后,pt-heartbeat不斷重試會導致內存緩慢增長的原因及解決辦法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 吸奶头是男的爽还是女的爽| 美女脱了内衣内裤| 肉文污| 高h肉爽文二女共夫| 揉我奶?啊?嗯高潮孕妇出轨| 一级大学生高清毛片| 男男肉肉肉放荡高辣啪啪文 | 中文字幕成人免费视频| 精品久久久久久亚洲| vod国产成人精品视频| 国产精品久久久久潘金莲| 亚洲精品国产精品国自产99.| 男女猛烈拍拍拍无挡视频| 成年美女黄网站色大片免费看| 国产日韩电影| 国产99精品一区二区三区免费| 欧美色图在线播放| 欧美 成人 亚洲 动漫 另类 | 调教女受虐狂vk| 跪撅扒开晾臀当众抽打| 亚洲欧美在线中文| 性欧美video另类vr| 九色最新网址| 国产午夜福利A∨在线机视频| 女生把坤放男生定眼里| 在电影院揉我胸h| 男生的小鸡插到女生的底下视频 | 成人??AV精品秘?免费软件| 天天操夜夜艹| 商务旅行戴绿帽子| 99久久婷婷国产综合精品青草千草 | 波多野结衣无码中文在线| 被老头玩的肉辣文H| 久久久精品一区二区三区免费| 全职法师开局十连抽系统| www.日本一区到六区在线观看| 互换娇妻爽文5系列| 国产精品最新| 免费观看又色又爽又黄的软件下载| 久久精品亚洲AV无码邻居| 韩国无遮挡18禁啪啪成人漫画|