2014-09-22 17 views
14

RabbitMQ允許您「連接」一個連接,即客戶端和服務器不時會檢查(使用空的消息)對方仍在那裏並可用。到現在爲止還挺好。在RabbitMQ中心跳的合理值是多少?

不幸的是,我無法在文檔中找到一個建議的地方,這是一個合理的價值。我知道你需要在幾秒鐘內指定心跳,但什麼是現實世界最佳實踐價值?

顯然,它不應該太頻繁(流量),但也不是太稀罕(代理,...)。有什麼建議麼?

15秒罰款? 30? 60? ...?

回答

2

的RabbitMQ的文檔現在提供5到20秒之間的推薦心跳超時值:

設置心跳超時值過低會導致誤報(被視爲不可同行,而它確實是不是這樣的)由於暫時的網絡擁塞,短暫的服務器流量控制等等。在選擇超時值時應該考慮到這一點。

數年來,來自用戶和客戶端庫維護人員的反饋表明,低於5秒的值很可能會導致誤報,並且1秒或更低的值很可能會這樣做。 5至20秒範圍內的值對於大多數環境是最佳的。

來源:https://www.rabbitmq.com/heartbeats.html#false-positives

另外,作爲RabbitMQ的3.5。5默認心跳超時值爲60秒(https://www.rabbitmq.com/heartbeats.html#heartbeats-timeout

11

這個答案如果對於RabbitMQ < 3.5.5,對於新版本請參閱@bmaupin的答案。

這取決於您的應用需求。開箱即用的是RabbitMQ 10分鐘。如果您無法兩次(20分鐘不活動)觸發心跳,連接將立即關閉,無需發送任何connection.close方法或經紀方發出的任何錯誤。

使用心跳的情況是防火牆關閉長時間連接或其他一些不允許等待連接的網絡設置的非活動狀態。

事實上,hearbeat是不是必須的,從RabbitMQ config doc

心跳

值,表示心跳延遲,以秒,該服務器在connection.tune幀發送。如果設置爲0,則禁用心跳。客戶端可能不遵循服務器建議,請參閱AMQP參考以獲取更多詳細信息。在有大量連接的情況下,禁用心跳可能會提高性能,但可能會導致在存在關閉不活動連接的網絡設備時丟失連接。 默認值:580

請注意,聽力信號間隔太短可能會導致顯着的網絡開銷。請記住,如果在連接上沒有其他活動在聽音時間間隔內發送,則會發送聽軸信息。

+0

可以將心跳設置爲1小時嗎?我如何從客戶端反應心跳? – moeseth 2016-11-08 12:20:50

相關問題