<span id="vx3nn"></span>
    <span id="vx3nn"></span>
        <s id="vx3nn"><dfn id="vx3nn"></dfn></s>
        1. <span id="vx3nn"><u id="vx3nn"></u></span>
          溫馨提示×

          RabbitMQ性能如何優化

          發布時間:2022-09-27 16:36:33 來源:億速云 閱讀:84 作者:iii 欄目:開發技術

          這篇文章主要介紹了RabbitMQ性能如何優化的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇RabbitMQ性能如何優化文章都會有所收獲,下面我們一起來看看吧。

          修改rabbitmq.config文件

          rabbitmq.config文件時rabbitmq的配置文件,他遵守Erlang配置文件定義。 rabbitmq.config文件位置:

          Unix $RABBITMQ_HOME/etc/rabbitmq

          Windows %APPDATA%\RabbitMQ\

          例子如下:

          [
              {mnesia, [{dump_log_write_threshold, 1000}]},
              {rabbit, [{tcp_listeners, [5673]}]}
            ].

          Memory配置和設置

          RabbitMQ在使用當前機器的40%以上內存時候,會發出內存警告,并組織RabbitMQ所有連接(producer連接)。直到RabbitMQ將當前數據刷入到硬盤或者消息被客戶端消費。

          當Erlang的垃圾回收機制運行起來(這是一個非常耗費資源的工作),會消費兩倍內存。(默認是80%的內存)。因此需要操作系統支持OS swap和page file.

          注意:在32為架構下,每個進程被限制為2GB。通常64架構系統限制每個進程為256TB,64位windows限制為8TB。就算在64位操作系統下,32位的進程只能用2GB內存。 因此強烈推薦使用64bit Erlang vm和64bit os。

          當RabbitMQ不能識別你的系統的時候,你必須對vm_memory_high_watermark進行修改。 當rabbitmq不能識別系統的時候,會設置內存為1024MB。所以rabbitmq實際使用的內存僅僅410MB。 當系統為8GB的時候,我們可以這是vm_memory_high_watermark=3,那么我們實際可以使用的內存為3GB。

          配置Memory Threshold文件

          默認配置RabbitMQ的vm_memory_high_watermark=0.4

          [{rabbit, [{vm_memory_high_watermark, 0.4}]}].

          舉例說明:

          當機器內存為16GB,那么40%,為6.4GB。主要當32系統時候,實際可以使用的內存為2GB,那么實際可以使用的內存為820MB。

          當我配置vm_memory_high_watermark=0 我們可以阻止所有消息發送。

          注意:這個百分比,最好不要修改。應為Erlang VM回收的時候會占據系統內存的80%。已經達到系統臨界區。不要設置超過50%的百分比。

          配置Page Threshold文件

          當內存中的數據達到一定數量后,他需要被page out出來。 默認配置 vm_memory_high_watermark_paging_ratio=0.5。也就是vm_memory_high_watermark0.5。假設總內存8GB,0.4的使用內存是3.2。那么當內存叨叨3.20.5=1.6GB時候,系統將會大量置換頁面。

          因此我們可以將頁面置換的百分比調高。設置為0.75

          [{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},
                   {vm_memory_high_watermark, 0.4}]}].

          注意:我們可以將vm_memory_high_watermark_paging_ratio設置超過1.0,那么不會發生內存換頁的情況,也就是說,當內存超過總內存的40%之后,將會阻止所有producer產生消息。

          配置命令

          rabbitmqctl  set_vm_memory_high_watermark 0.4

          這是內存使用占總內存數的百分比

          rabbitmqctl set_vm_memory_high_watermark_paging_ratio 0.75

          設置rabbitmq使用內存達到rabbitmq可用內存百分比,就出發頁面交換功能。

          rabbitmqctl status

          獲得系統配置。

          Disk配置和設置

          RabbitMQ會在硬盤空間不夠的時候,阻止Producer發送消息。這樣可以保證RabbitMQ可以再任何時候,將內存中的數據置換到磁盤中來。通常會將硬盤剩余數據大小設置為機器的總內存大小。

          全局流控制會被觸發,當可用總硬盤容量已經低于配置信息。broker數據庫將會最少10秒檢查一下警告是否發出或者清除。

          在RabbitMQ啟動的后,會打印disk limit限制,但是不能識別的平臺就不能顯示信息。

          注意:當RabbitMQ是集群情況下,當其中有一臺機器硬盤不足的時候,所有節點的producer鏈接都會被阻止。

          RabbitMQ會定期價檢查總磁盤可用空間的大小。通常時間為10秒每次,當限制快被達到時候,RabbitMQ檢查的時候會達到10次/s.

          配置Disk Free Space Limit

          我們可以直接設置硬盤的最小限制。也可以設置相對內存大小的設置。

          先設置磁盤1GB限制

          [{rabbit, [{disk_free_limit, 1000000000}]}].

          在這時相對于機器總內存

          [{rabbit, [{disk_free_limit, {mem_relative, 1.0}}]}].

          Erlang的Hipe優化

          可以設置hipe_compiles設置??梢钥吹接?0-50%的性能優化。而你只需要付出1分鐘左右的延遲啟動。 HiPE需要你檢查是否編譯進入你的Erlang安裝環境。Ubuntu,需要安裝erlang-base-hipe.默認有些平臺不支持。如果Erlang VM segfaults,請關閉這個選項。

          [{rabbit, [{hipe_compile, true}]}].

          關于“RabbitMQ性能如何優化”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“RabbitMQ性能如何優化”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

          推薦閱讀:mongodb性能優化

          免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

          主題地圖

          国产精品国产精品一区精品国产自在现偷99精品国产在热2019国产拍偷精品网国产精品视频全国免费观看,国产精品v欧美精品v日韩精品青青精品视频国产久久国产精品久久精品国产亚洲精品国产精品国产欧美精品一区二区三区,国产精品第一页国产亚洲精品国产福利国产精品自拍国产精品视频在线观看亚洲国产精品一区二区久久国产精品国产三级国产专不,国产精品视频大陆精大陆国产国语精品2019精品国产品对白在线290年香蕉精品国产高清自在自线隔壁老王国产在线精品在线观看精品国产福利片,国产三级精品三级在专区精品国产自在现偷国产精品一区二区三区国产日韩精品欧美一区喷水亚洲精品国产精品国自产国产在线精品一区二区不卡