2017-03-09 57 views
0

我測試我的RabbitMQ 3個節點集羣,這些天, 我使用java工具來測試,爲什麼我的RabbitMQ集羣連接和渠道保持流動狀態

[[email protected] bin ]$ ./runjava com.rabbitmq.perf.PerfTest -x1 -y1 -e testex -Hmqp://username:[email protected]/test' -t topic -k sample.info -s 1500 -i 20 
id: test-154506-639, starting consumer #0 
id: test-154506-639, starting consumer #0, channel #0 
id: test-154506-639, starting producer #0 
id: test-154506-639, starting producer #0, channel #0 
id: test-154506-639, time: 20.000s, sent: 8913 msg/s, received: 8804 msg/s, min/avg/max latency: 6317/251907/727492 microseconds 
id: test-154506-639, time: 40.004s, sent: 8993 msg/s, received: 8991 msg/s, min/avg/max latency: 157294/256691/387926 microseconds 
id: test-154506-639, time: 60.011s, sent: 9029 msg/s, received: 9019 msg/s, min/avg/max latency: 146744/255631/384696 microseconds 
id: test-154506-639, time: 80.017s, sent: 8946 msg/s, received: 8972 msg/s, min/avg/max latency: 164969/259147/723908 microseconds 
id: test-154506-639, time: 100.019s, sent: 8971 msg/s, received: 8949 msg/s, min/avg/max latency: 164012/258115/353767 microseconds 

我發現我的RabbitMQ連接和信道狀態保持處於流動狀態。但是爲什麼呢?有沒有辦法提高性能?

我認爲流動狀態讓發佈者快速發送消息,以防服務器無法排隊消息。

但我用來測試的發送速率似乎並不高,爲什麼它們仍處於流動狀態?

任何人都可以提供幫助嗎?提前致謝。

回答

0

Flow Control

的RabbitMQ將減少其發佈太快隊列跟上的連接速度。

如果您想了解更多的信貸流,你可以閱讀本doc,特別是:

看到它的設置是如何credit_flow,影響出版,讓我們來看看消息的時間內於RabbitMQ的流動。請記住,RabbitMQ在Erlang中實現,其中進程之間通過發送消息進行通信。

你可以試着加大credit_flow參數

+0

謝謝加布裏埃萊, – zero

+0

謝謝加布裏埃萊。我閱讀文檔鏈接,但我有一些不清楚的地方。 假設rabbitmq設置credit_flow_default_credit defalut默認情況下,InitialCredit設置爲200,MoreCreditAfter設置爲50,那麼它會出現一個帶有2個隊列(q1和q2)的通道,這樣通道會啓動200 * 2信用?是對的嗎?如果每個隊列發送了50條消息,它將返回50個信用額度,不是嗎? – zero

+0

我們假設q1非常慢,不能再向該頻道返回任何信用,但q2足夠快以快速返回信用。這樣q2將能夠授予該頻道的功勞,並且該頻道不會被阻止? 因此,我可以這麼說,如果一個連接有多個通道(或者一個通道有多個隊列),就不​​太可能阻塞連接或通道(因爲如果一個通道或隊列速度更快,它可以授予信貸上游)。 – zero

相關問題