2017-08-15 62 views
0

這裏是我的rabbitmqctl status的RabbitMQ耽誤我的消息隨機

[{pid,32074}, 
{running_applications, 
    [{rabbitmq_management,"RabbitMQ Management Console","3.2.2"}, 
     {rabbitmq_management_agent,"RabbitMQ Management Agent","3.2.2"}, 
     {rabbit,"RabbitMQ","3.2.2"}, 
     {os_mon,"CPO CXC 138 46","2.2.7"}, 
     {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.2.2"}, 
     {webmachine,"webmachine","1.10.3-rmq3.2.2-gite9359c7"}, 
     {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.2.2-git680dba8"}, 
     {xmerl,"XML parser","1.2.10"}, 
     {inets,"INETS CXC 138 49","5.7.1"}, 
     {mnesia,"MNESIA CXC 138 12","4.5"}, 
     {amqp_client,"RabbitMQ AMQP Client","3.2.2"}, 
     {sasl,"SASL CXC 138 11","2.1.10"}, 
     {stdlib,"ERTS CXC 138 10","1.17.5"}, 
     {kernel,"ERTS CXC 138 10","2.14.5"}]}, 
{os,{unix,linux}}, 
{erlang_version, 
    "Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:32:32] [rq:32] [async-threads:30] [kernel-poll:true]\n"}, 
{memory, 
    [{total,1954308048}, 
     {connection_procs,619048024}, 
     {queue_procs,166111144}, 
     {plugins,4423520}, 
     {other_proc,46207032}, 
     {mnesia,44407568}, 
     {mgmt_db,331614464}, 
     {msg_index,6694584}, 
     {other_ets,30005328}, 
     {binary,63825504}, 
     {code,17629100}, 
     {atom,6531121}, 
     {other_system,617810659}]}, 
{vm_memory_high_watermark,0.4}, 
{vm_memory_limit,53967541043}, 
{disk_free_limit,50000000}, 
{disk_free,51883839488}, 
{file_descriptors, 
    [{total_limit,655260}, 
     {total_used,12659}, 
     {sockets_limit,589732}, 
     {sockets_used,12657}]}, 
{processes,[{limit,1048576},{used,125740}]}, 
{run_queue,1}, 
{uptime,33320350}] 

我的隊列是空的最多的時間。但是我的RabbitMQ有84440個交換機和8917個隊列。

我的問題是消息可能會延遲很長一段時間,因爲我發送它。

我試圖從現場獲得一些信息。這裏是我的監測圖表,當延遲發生時。 我們可以看到的是概述和我的交流是好的。但是我的隊列中的消息延遲了交付和確認。

但是從我的應用程序日誌。

2017-08-10 17:23:08.738 4219 INFO trove.openstack.common.rpc.amqp [-] [ProxyCallback]Received Message with Timestamp:2017-08-10T17:23:08, duration:0.737949s, unique_id:a17186068cae447bbada7a0f24ff45ef 

17:23消息而不delay.And收到然後我就發回ACK到MQ:

2017-08-10 17:23:08.739 4219 DEBUG trove.openstack.common.rpc.common [-] Consume Massage with ACK True 

,而我的17:43消息是由215.895117s延遲,真糊塗我。

2017-08-10 17:43:53.895 4219 INFO trove.openstack.common.rpc.amqp [-] [ProxyCallback]Received Message with Timestamp:2017-08-10T17:40:18, duration:215.895117s, unique_id:dc04b94c8fa64978bc9d681b020f4500 

回答

0

這個問題看起來很奇怪,如果海報解決了,請在這裏發帖。

0

最後,我發現這是我的網絡問題。 有時候郵件會在發送時丟失,而RabbitMQ需要很長時間的超時並重新發送郵件。 因爲我的信息延遲了。


問題幹從安全組規則,一個TCP連接將被通過網關無需復位900S沒有分組發送斷開後(剛落包)。

和系統寬tcp保持活動(tcp_keepalive_intvl)設置爲1200s。

所以我只是設置tcp_keepalive_intvlsysctl到600s,問題解決了。