Rabbitmq 效能測試

來源:互聯網
上載者:User

標籤:

背景:

線上環境,出了一起事故,初步定位是rabbitmq server。

通過抓包發現,是有多個應用使用同一台rabbitmq server。並且多個應用使用rabbitmq的方式也不一樣。發現有以下兩種方式:

1. 每次produce 一條訊息,開閉channel一次

2. 每次produce 一條訊息,開閉connection一次,開閉channel一次。

這種使用方法是我們懷疑的一個點,除此之外還有懷疑的點有:

1. rabbitmq cluster的配置問題

2. rabbitmq server的硬體問題(體現在磁碟的io_wait 升高,tcp串連數的上升)

3. rabbitmq 本身的問題?

4. 網路抖動和網路延遲?

 

因為可能性比較多,所以,做一次全面的評估和定位還是有必要的。

有些任務交給IT和營運去追蹤了。我這邊主要負責一下用戶端使用方式的評估

目標:

1. 確認使用兩種使用方法(見上文),是否會造成瓶頸?

2. 確認兩種使用方法,在什麼情況下會出問題?是否會百分百可以重現?

從理論上,rabbitmq文檔,以及抓包資料來說:每條訊息開關一次connection 必然是效率最低的。

試想一下,每條訊息體,需要建立和關閉一條tcp串連,中間還要摻雜著AMQP的控制報文,多麼的浪費資源!!!!

簡單的測評結果如下:

 
方法描述 高峰訊息量 參數 備忘
共用一個connection,每條訊息開關一次channel。 2000msg/s 1個線程,無消費者 使用本機Rabbitmq,本地java client
每條訊息開關一次connection 200msg/s 1個線程,無消費者 使用本機Rabbitmq,本地java client

 

 

 

 

 

 

上面這個結果是一個簡單的測試結果。

在嘗試混合使用兩種模式訪問本地rabbitmq的時候,出現了一下問題。問題也很奇怪,有一個方法的進程啟動後,另外一種就會SocketTimeout。

 

後面只好在測試環境找了台Rabbitmq Server。

然後google了一把,原來有個jmeter-rabbitmq-plugin。太帥了。功能不全是自己要的,沒關係,改唄。代碼參見:https://github.com/lykm02/JMeter-Rabbit-AMQP 。(我更新了maven build 方式和一些jar version資訊,在branch support_maven_xx 上)

放到jmeter中,就可以使用jmeter來壓了。

結論是:確實connection的使用方式 會影響到rabbitmq的內部,從而導致其他串連到同一rabbitmq的串連收到影響。

具體工作原理,因為涉及到rabbitmq的源碼,目前沒有深入研究。

 

Rabbitmq 效能測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.