成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析

Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析

熱門標(biāo)簽:陜西辦理400電話 宿州外呼系統(tǒng)公司 南充電銷外呼系統(tǒng) 海外工廠地圖標(biāo)注 地圖標(biāo)注小程序 信陽(yáng)電銷外呼系統(tǒng)怎么樣 貴陽(yáng)網(wǎng)絡(luò)外呼系統(tǒng)軟件 株洲電銷 南昌外呼系統(tǒng)定制

前言

使用rabbitmq的時(shí)候,當(dāng)你客戶端與rabbitmq服務(wù)器之間一段時(shí)間沒(méi)有流量,服務(wù)器將會(huì)斷開(kāi)與客戶端之間tcp連接。

而你將在服務(wù)器上看這樣的日志:

missed heartbeats from client, timeout: xxs

這個(gè)間隔時(shí)間就是心跳間隔。

heartbeat通常用來(lái)檢測(cè)通信的對(duì)端是否存活(未正常關(guān)閉socket連接而異常crash)。其基本原理是檢測(cè)對(duì)應(yīng)的socket連接上數(shù)據(jù)的收發(fā)是否正常,如果一段時(shí)間內(nèi)沒(méi)有收發(fā)數(shù)據(jù),則向?qū)Χ税l(fā)送一個(gè)心跳檢測(cè)包,如果一段時(shí)間內(nèi)沒(méi)有回應(yīng)則認(rèn)為心跳超時(shí),即認(rèn)為對(duì)端可能異常crash了。

rabbitmq也不例外,heatbeat在客戶端和服務(wù)端之間用于檢測(cè)對(duì)端是否正常,即客戶端與服務(wù)端之間的tcp鏈接是否正常。

關(guān)于rabbitmq心跳

1.heartbeat檢測(cè)時(shí)間間隔可在配置文件rabbitmq.config中增加配置項(xiàng){heartbeat,Timeout}進(jìn)行配置,其中Timeout指定時(shí)間間隔,單位為秒,另外客戶端也可以配置heartbeat時(shí)間。

如果服務(wù)端沒(méi)有配置

默認(rèn)代理心跳時(shí)間:

RabbitMQ 3.2.2:580秒
RabbitMQ 3.5.5:60秒

2.官方建議不要禁用心跳,且建議心跳時(shí)間為60秒。

3.心跳每 heartbeat timeout / 2 秒發(fā)送一次,服務(wù)器兩次沒(méi)有接收到則斷開(kāi)tcp連接,以前的連接將失效,客戶端需要重新連接。

4.如果你使用Java, .NET and Erlang clients,服務(wù)器與客戶端會(huì)協(xié)商heartbeat時(shí)間

如果其中一個(gè)值為0,則使用兩者中較大的一個(gè)

否則,使用兩者中較小的一個(gè)

兩個(gè)值都為0,則表示要禁用心跳,則服務(wù)端與客戶端維持此tcp連接,不會(huì)斷開(kāi)。

注意:在python客戶端上直接設(shè)置為0,則禁用心跳。

禁用心跳在python客戶端該如何設(shè)置:

在py3:ConnectionParameters設(shè)置heartbeat_interval=0即可。

在py2:ConnectionParameters設(shè)置heartbeat=0即可。

5.連接上的任何流量(傳輸?shù)挠行?shù)據(jù)、確認(rèn)等)都將被計(jì)入有效心跳,當(dāng)然也包括心跳幀。

6.我在網(wǎng)上看到有人問(wèn)到這個(gè)問(wèn)題:

為什么服務(wù)端宕機(jī),在心跳檢測(cè)機(jī)制下,服務(wù)器側(cè)斷開(kāi)連接,而客戶端這邊不能檢測(cè)到tcp斷開(kāi),我測(cè)試過(guò),客戶端確實(shí)不能檢測(cè)到tcp連接斷開(kāi),只有當(dāng)客戶端在這個(gè)tcp有操作后,才能檢測(cè)到,當(dāng)然在一個(gè)斷開(kāi)的tcp連接上做操作會(huì)報(bào)錯(cuò)(如發(fā)送消息)。

import pika 
import time 

credit = pika.PlainCredentials(username='cloud', password='cloud')
connection = pika.BlockingConnection(pika.ConnectionParameters(
  host='10.32.1.12', credentials=credit))
channel = connection.channel() 
while True:
  connect_close = connection.is_closed
  connect_open = connection.is_open
  channel_close = channel.is_closed
  channel_open = channel.is_open
  
  print("connection is_closed ", connect_close)
  print("connection is_open ", connect_open)
  print("channel is_closed ", channel_close)
  print("channel is_open ", channel_open)
  print("")
  time.sleep(5)

7.一些RabbitMQ客戶端(Bunny,Java,.NET,Objective-C,Swift)提供了一種在網(wǎng)絡(luò)故障后自動(dòng)恢復(fù)連接的機(jī)制,而pika只能通過(guò)檢測(cè)連接異常后再重新創(chuàng)建連接的方式。

示例代碼:通過(guò)檢測(cè)連接異常,重新創(chuàng)建連接:

import pika

while True:
  try:
    connection = pika.BlockingConnection()
    channel = connection.channel()
    channel.basic_consume('test', on_message_callback)
    channel.start_consuming()
  # Don't recover if connection was closed by broker
  except pika.exceptions.ConnectionClosedByBroker:
    break
  # Don't recover on channel errors
  except pika.exceptions.AMQPChannelError:
    break
  # Recover on all other connection errors
  except pika.exceptions.AMQPConnectionError:
    continue

你也可以使用操作重試庫(kù),例如 retry。

from retry import retry

@retry(pika.exceptions.AMQPConnectionError, delay=5, jitter=(1, 3))
def consume():
  connection = pika.BlockingConnection()
  channel = connection.channel()
  channel.basic_consume('test', on_message_callback)
  try:
    channel.start_consuming()
  # Don't recover connections closed by server
  except pika.exceptions.ConnectionClosedByBroker:
    pass
consume()

heartbeat的實(shí)現(xiàn)

rabbitmq在收到來(lái)自客戶端的connection.tune-ok信令后,啟用心跳檢測(cè),rabbitmq會(huì)為每個(gè)tcp連接創(chuàng)建兩個(gè)進(jìn)程用于心跳檢測(cè),一個(gè)進(jìn)程定時(shí)檢測(cè)tcp連接上是否有數(shù)據(jù)發(fā)送(這里的發(fā)送是指rabbitmq發(fā)送數(shù)據(jù)給客戶端),如果一段時(shí)間內(nèi)沒(méi)有數(shù)據(jù)發(fā)送給客戶端,則發(fā)送一個(gè)心跳包給客戶端,然后循環(huán)進(jìn)行下一次檢測(cè);另一個(gè)進(jìn)程定時(shí)檢測(cè)tcp連接上是否有數(shù)據(jù)的接收,如果一段時(shí)間內(nèi)沒(méi)有收到任何數(shù)據(jù),則判定為心跳超時(shí),最終會(huì)關(guān)閉tcp連接。另外,rabbitmq的流量控制機(jī)制可能會(huì)暫停heartbeat檢測(cè),這里不展開(kāi)描述。

涉及的源碼:

start(SupPid, Sock, SendTimeoutSec,
   SendFun, ReceiveTimeoutSec, ReceiveFun) ->
  %%數(shù)據(jù)發(fā)送檢測(cè)進(jìn)程
  {ok, Sender} = start_heartbeater(SendTimeoutSec, SupPid, Sock,
                   SendFun, heartbeat_sender,
                   start_heartbeat_sender),
  %%數(shù)據(jù)接收檢測(cè)進(jìn)程
  {ok, Receiver} = start_heartbeater(ReceiveTimeoutSec, SupPid,
                    Sock, ReceiveFun,
                    heartbeat_receiver,
                    start_heartbeat_receiver),
  {Sender, Receiver}.

start_heartbeat_sender(Sock, TimeoutSec, SendFun) ->
  %% the 'div 2' is there so that we don't end up waiting for
  %% nearly 2 * TimeoutSec before sending a heartbeat in the
  %% boundary case
  heartbeater({Sock, TimeoutSec * 1000 div 2, send_oct, 0,
         fun () -> SendFun(), continue end}).

start_heartbeat_receiver(Sock, TimeoutSec, ReceiveFun) ->
  %% we check for incoming data every interval, and time out after
  %% two checks with no change. As a result we will time out
  %% between 2 and 3 intervals after the last data has been
  %% received
  heartbeater({Sock, TimeoutSec * 1000, recv_oct, 1,
        fun () -> ReceiveFun(), stop end}).

heartbeater({Sock, TimeoutMillisec, 
       StatName, Threshold, Handler} = Params,
      Deb,
      {StatVal, SameCount} = State) ->
  Recurse = fun (State1) -> heartbeater(Params, Deb, State1) end,
  receive
    ...
  %% 定時(shí)檢測(cè)
  after TimeoutMillisec ->
    case rabbit_net:getstat(Sock, [StatName]) of
      {ok, [{StatName, NewStatVal}]} ->
        %% 收發(fā)數(shù)據(jù)有變化
        if NewStatVal =/= StatVal ->
            %%重新開(kāi)始檢測(cè)
            Recurse({NewStatVal, 0});
          %%未達(dá)到指定次數(shù), 發(fā)送為0, 接收為1
          SameCount < Threshold ->
            %%計(jì)數(shù)加1, 再次檢測(cè)
            Recurse({NewStatVal, SameCount + 1});
          %%heartbeat超時(shí)
          true ->
            %%對(duì)于發(fā)送檢測(cè)超時(shí), 向客戶端發(fā)送heartbeat包
            %%對(duì)于接收檢測(cè)超時(shí), 向父進(jìn)程發(fā)送超時(shí)通知
            %%由父進(jìn)程觸發(fā)tcp關(guān)閉等操作
            case Handler() of
              %%接收檢測(cè)超時(shí)
              stop   -> ok;
              %%發(fā)送檢測(cè)超時(shí)
              continue -> Recurse({NewStatVal, 0})
            end;
      ...

收發(fā)檢測(cè)的時(shí)候利用了inet模塊的getstat,查看socket的統(tǒng)計(jì)信息

recv_oct: 查看socket上接收的字節(jié)數(shù)

send_oct: 查看socket上發(fā)送的字節(jié)數(shù)

inet詳細(xì)見(jiàn)這里: http://www.erlang.org/doc/man/inet.html

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:鄭州 石嘴山 晉城 三明 汕頭 玉林 拉薩 開(kāi)封

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析》,本文關(guān)鍵詞  Rabbitmq,heartbea,心跳,檢測(cè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Rabbitmq heartbea心跳檢測(cè)機(jī)制原理解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩av在线播放资源| 激情视频在线观看| 最新亚洲人成网站在线观看| 亚洲国产精品久久久久爰性色| 99久久99热这里只有精品| 欧美日韩一区久久| 自拍一区在线观看| 国产成人免费网站| 你懂的网站在线观看网址| 亚洲一区二区四区蜜桃| 免费人成在线观看视频播放| 毛片女人与拘交视频| 午夜三级在线观看| 69精品无码成人久久久久久| 欧美日韩黄色一区二区| 日本免费一区二区视频| 91po在线观看91精品国产性色| 一本色道久久综合狠狠躁篇怎么玩| 国产chinese中国hdxxxx| 香蕉视频禁止18| 国产极品久久久久久久久波多结野| 国产三级精品在线不卡| a在线观看网站| 亚洲男人天堂2024| 97在线视频免费播放| 少妇一级淫免费播放| 久久一区激情| 好爽好深好紧好大| 免费看成人吃奶视频在线| 亚洲激精日韩激精欧美精品| 色播五月激情五月| 成人在线观看小视频| 欧美人与性动交α欧美精品济南到| 成人黄页网站视频| 日韩美女视频免费在线观看| 黑人巨大xxx| 亚洲免费av网站| 欧美涩涩网站| 国产精久久久| 色琪琪综合男人的天堂aⅴ视频| 国产日韩在线| 精品粉嫩aⅴ一区二区三区四区| 日本久久久久久久久久久| xxxxxx国产| 亚洲第一网中文字幕| 91国产精品视频在线观看| 狠狠色丁香久久婷婷综合丁香| www.黄色片| 美女网站视频黄色| 免费看的av网站| 男男受被啪到高潮自述| 午夜男人视频在线观看| 国产精品实拍| 一本到不卡精品视频在线观看| 中文字幕在线观看网址| 亚洲美女免费精品视频在线观看| 国产成人精品av| 午夜精品久久久久久久99老熟妇| 久久久久国产一区二区| 激情小视频在线| 午夜精品一区二区三区国产| 日韩欧美国产综合| 极品粉嫩国产18尤物| 狠狠躁夜夜躁久久躁别揉| 五月婷婷一区二区| 福利网站在线观看| 69久久夜色精品国产69乱青草| 亚洲女人天堂a在线播放| 欧美精品中文字幕一区二区| 亚洲免费观看在线视频| 国产精品色呦呦| 69欧美性猛交| 国产精品久久久久久户外露出| 中文字幕日产av一二三区| 91中文字精品一区二区| 麻豆中文字幕在线观看| 国产原创欧美精品| www.av视频在线观看| 1204国产成人精品视频| а√中文在线天堂精品| 亚洲成人黄色网址| 无遮挡又色又刺激的女人视频| 狠狠色噜噜狠狠狠狠888奇米| 亚洲日本视频在线| 亚洲婷婷丁香| 波多野结衣视频在线观看| 亚洲国产精品99| 精品女厕一区二区三区| 久久丫精品忘忧草西安产品| 最近中文字幕mv在线一区二区三区四区| 国产成人精品三级高清久久91| www.爱爱.com| 午夜网站在线观看| 国产午夜精品理论片在线| 日本sm残虐另类| 精品日产卡一卡二卡麻豆| 国模私拍视频| 四虎精品影院在线观看视频| 日本人添下边视频免费| 国产一级特黄视频| 国产在线精品国自产拍免费| 一区二区三区四区视频在线观看| 中文字幕免费不卡| 亚洲黄页网在线观看| 精品欧美乱码久久久久久1区2区| sm捆绑调教国产免费网站在线观看| 糖心vlog在线免费观看| 国产一起色一起爱| 久久精品成人av| 在线欧美成人| 日产精品久久久| 九九热视频在线| 69av在线视频| 久久99精品久久久久久三级| 韩国三级hd中文字幕| 九色在线视频| 亚洲国产精品成人久久综合一区| 国产精品久久精品视| 欧美成人精品在线视频| 久久精品中文字幕电影| 亚洲私人黄色宅男| 成人午夜av| 欧美日韩偷拍视频| 久久久精品国产| 男人天堂av在线播放| 欧美日韩一区二区欧美激情| 天天操天天干天天舔| 午夜国产一级| 欧美日韩高清一区二区三区| 性色av一区二区咪爱| 欧美精品尤物在线| 成人18视频在线播放| 久久久av免费| 日日夜夜免费精品视频| 久久青青草原一区二区| 成av人电影在线观看| 欧美日本一区二区三区四区| 在线综合视频| 国产不卡视频一区二区三区| 成人精品久久久| 欧美精品久久久久久久多人混战| 一级特黄a大片免费| 另类图片激情| 欧美日韩大陆在线| 蜜桃在线一区二区三区精品| 手机看片久久久| 在线看三级网站视频| 日韩欧美国产免费播放| 欧美 日韩 激情| 亚洲r级在线观看| 亚洲黄色在线| 91麻豆国产精品久久| 亚洲综合无码一区二区| 在线播放亚洲| av在线免费播放网址| 亚洲一区视频在线| 亚洲精品福利视频| 天堂√在线中文官网在线| 日本视频在线免费观看| 中文字幕日韩精品无码内射| 欧美少妇一级片| 超鹏97在线| 欧美精品一区二区久久| 欧美91精品久久久久国产性生爱| 一本大道久久a久久精品综合| 亚洲一区二区三区免费看| 免费黄色一级网站| 国产成人久久久精品一区| 少妇一区二区三区| 亚洲天天影视网| 国产精品无码一区二区三| 欧美性色aⅴ视频一区日韩精品| 国产精品v一区二区三区| 国产美女视频免费看| 精品久久久久久久久久久久久久久久久| 麻豆精品视频在线观看| 蜜桃精品视频在线观看| 伊人久久av| 欧美一级特黄aaaaaa| 91一区二区三区| 亚洲三级电影网站| 国产福利免费视频| 91麻豆精品秘密| 中国女人内谢25xxxxx| 成人做爰69片免费看网站| 亚洲综合五月天婷婷丁香| 亚洲欧美在线播放| 三级毛片在线免费看| 亚洲大尺度网站| 国产精品欧美久久久久无广告| 久久av秘一区二区三区| 国产福利电影在线观看| 欧美一级片免费在线观看| 国内精品在线播放| 户外露出一区二区三区| 99re99| 欧美黑人疯狂性受xxxxx喷水| 亚洲色图综合久久| 中文官网资源新版中文第二页在线观看| 久久综合狠狠综合| 国产精品在线| 久久久久久影视| 精品国产二区三区| 久久中文字幕导航| 在线观看的网站你懂的| 在线观看日韩精品视频| 久久久久99精品成人片三人毛片| 色综合久久网| 日韩女同强女同hd| 精品中文字幕一区二区小辣椒| 午夜电影网一区| 在线播放一级片| 久国内精品在线| 欧洲精品视频在线观看| 久久91精品国产91久久跳| av在线女优影院| 亚洲图片视频小说| 96亚洲精品久久久蜜桃| 国产欧美亚洲精品a| 99久久99久久| 5566先锋影音夜色资源站在线观看| 亚洲国产1区| 国产呦系列欧美呦日韩呦| 精品国产自在久精品国产| 亚洲97在线观看| 日韩欧美国产大片| 中文在线字幕av| 九九视频精品全部免费播放| 欧美xxx久久| 91国在线产| 亚洲kkk444kkk在线观看| 欧美三级免费| 日韩极品在线| 国产美女视频91| 男女午夜刺激视频| 成人3d动漫一区二区三区91| 欧美视频不卡中文| 亚洲国产一区二区久久久777| 公侵犯人妻一区二区三区| a√资源在线| 免费看日产一区二区三区| 欧美在线观看天堂一区二区三区| 日韩欧美电影一区| 再深点灬舒服灬太大了少妇| 性欧美videosex高清少妇| 人人狠狠综合久久亚洲| 伊人久久男人天堂| 国产一区二区三区久久久久久久久| 亚洲а∨天堂久久精品2021| 外国电影一区二区| 一级毛片在线视频| 欧美日韩国产中文字幕| 精品一区二区三区蜜桃在线| 宅男av一区二区三区| 国产精品丝袜一区| 国产成人三级视频| 97超碰在线免费观看| 欧美日韩国产在线观看网站| 中文字幕中文字幕一区二区| 国产精品一区二区精品| 国产视频xxx| 图片区 小说区 区 亚洲五月| 99久久国产综合色|国产精品| 亚洲一区二区三区四区在线| 亚洲少妇激情视频| 可以在线观看av的网站| 欧美 日韩 国产一区二区在线视频| 成年女人在线视频| 久久久久亚洲av成人无码电影| 懂色av蜜桃av| 丁香啪啪综合成人亚洲| h视频免费看| 精品国产伦一区二区三区免费| 成人亚洲欧美一区二区三区| www高清在线视频日韩欧美| 午夜久久久久久久久久| 亚洲午夜精品久久久久久久久久久久| 色精品一区二区三区| 欧美人妖巨大在线| 成人欧美一区二区三区在线观看| 日日狠狠久久偷偷四色综合免费| 最新版天堂资源在线| 日本中文字幕二区| 国产精品无码天天爽视频| 1024视频在线| 污网站在线观看免费| 影音先锋中文一区| 91色视频在线导航| 亚洲毛片播放| 无码国产69精品久久久久同性| 亚洲第一论坛sis| 夜夜躁狠狠躁日日躁2021日韩| 粉嫩av一区二区三区在线播放| 日本女优一区| 亚洲人成精品久久久久| 66av国产| 97精品国产一区二区三区| 亚洲激情丁香| xxxx在线免费观看| 国产日韩欧美一区二区三区四区| 欧美一级特黄aaaaaa大片在线观看| 久久综合中文色婷婷| 国模吧一区二区三区| 欧美做受777cos| 678在线观看视频| 亚洲91视频| 欧美精品久久久久久久久老牛影院| 国产黄色片在线播放| 欧美性色黄大片手机版| 午夜精品aaa| 一区二区三区在线视频观看| 亚洲色成人www永久网站| 成人丝袜高跟foot| 中文字幕一区二区三区四区免费看| 欧美日韩一区二区区别是什么| 高清视频国产| 久热中文字幕精品视频在线| 国产素人视频在线观看| 朝桐光av一区二区三区| 亚洲欧美另类人妖| 久久久精品免费观看| 久久在线视频在线| 好吊色视频988gao在线观看| 一区二区三区四区精品在线视频| 老司机精品久久| 9i在线看片成人免费| av首页在线观看| 午放福利视频在线播放|