硬件配置
宿主機用的聯想3850X6的服務器四顆E7-4850v3的處理器,DDR4內存,兩塊1.25TB的pcie固態。在宿主機上使用的事esxi5.5的虛擬化平台,在子系統中安裝RabbitMQ和測試腳本,RabbitMQ配置如下:
CPU:24核
內存:24GB
硬盤:24GB固態
確定哪些參數可能影響性能:進程數、是否持久化、是否ack確認以及交換機模式。其實交換機模式更多應該影響發布消息的性能,因為在消費消息時消息已經在隊列所以影響不大。為了避免之前的一些配置影響測試我新建了一台RabbitMQ服務。
模式對性能的影響
首先我們看下不同交換機模式對新建交換機、新建隊列、綁定、發布消息等性能的影響。在測試腳本中我是for循環建立10萬交換機、循環建立10萬隊列、循環綁定10萬、發送10萬消息。有個疑問:消息發布的速度比我之前使用單獨發布消息的速度快很多,單機模式之前從來沒有超過5萬過。
以上測試數據都是持久化的情況下的測試結果,可以看出不同的模式對於新建交換機、新建隊列、綁定等操作性能影響不大,但是在direct模式下明顯消息發布的性能比其他模式強很多,並且消息發送到相同隊列比發送到不同隊列性能稍好。
持久化對消息性能的影響
實際生產中大部分的操作一般是消息的訂閱和發布,下面對消息訂閱和發布的性能進行詳細測試。發布100萬消息。
在消息持久化模式下:
發布:13888msg/s
訂閱:15384msg/s
在消息非持久化模式下:
發布:18867msg/s
訂閱:26315msg/s