rocketmq阿里云服務器配置 阿里云搭建mqtt服務器
RocketMQ部署以及調優
RocketMQ的部署,這里不做太多的說明,因為官方文檔上面寫的已經非常清晰了,可以照著官方文檔一頓操作,下面為官方文檔的地址:
成都創新互聯提供成都做網站、成都網站建設、網頁設計,品牌網站建設,1元廣告等致力于企業網站建設與公司網站制作,10年的網站開發和建站經驗,助力企業信息化建設,成功案例突破上1000+,是您實現網站建設的好選擇.
RocketMQ的調優其實在官方文檔的最佳實踐中也寫的挺清晰的,可以直接參考官方文檔,筆者記錄的這主要是自己消化后,自己理解的一些東西。
備注:以下幾個參數對所有的中間件都起作用,比如redis、kafka等
該參數有三個值可以選擇:0、1、2
"0":在中間件系統申請內存對時候,os內核會檢查可用內存是否足夠,如果足夠的話就分配給你,如果感覺剩余內存不是太夠,干脆就直接拒絕申請,從而導致中間件申請內存失敗,出現異常。
"1":所有可用的物理內存都允許分配給你,只要有內存就給你用,這樣可以避免內存申請失敗的問題,一般將這個參數的值調整為1。
"2":表示內核允許分配超過所有物理內存和交換空間總和的內存
該參數影響中間件系統可以開啟線程的數量,如果參數的值太少,可能會造成有些中間無法開啟足夠的線程,從而導致出錯,然后使中間件系統掛掉。該參數的默認值為:65536,這個默認值有時候是不夠的,建議這個參數值調大10倍,為655360。
該參數是用來控制swap行為的,這個簡單的來說,就是os會把一部分磁盤空間作為swap區域,然后如果有的進程現在可能是不太活躍,就會被操作系統把進程調整為睡眠狀態,把進程中的數據放入磁盤上的swap區域,然后讓該進程原來占有的內存空間騰出來,交給其他活躍的進程來使用。
將該參數的值設置為0 :意思就是盡量別把任何一個進程放到磁盤swap區域,盡量大家都用物理內存。
將該參數的值設置為100 :意思是盡量把一些進程給放到swap區域去,內存騰出來給活躍的進程使用。
默認該參數的值為60 :有點偏高,可能會導致我們的中間件運行不活躍的時候被迫騰出內存空間然后放磁盤swap區域去。因此一般在生產環境建議將該值調小一些,比如10,讓進程盡量使用物理內存,別放磁盤swap區域去。
該參數是用來控制linux上的最大文件鏈接數的,默認值為1024,一般肯定是不夠的,因為在大量頻繁的讀寫磁盤文件的時候或進行網絡通信的時候,都會和這個參數有關系。如果采用默認值,可能會出現如下錯誤:error: too many openfiles。
總結:
因為RocketMQ是用java語言編寫的所以在啟動的時候需要使用虛擬機,所以對JVM進行調優。
在runbroker.sh啟動腳本中可以看到如下內容:
對上面參數對解釋:
-server :以服務器的模式啟動。
-Xms8g -Xmx8g -Xmn4g : 默認的堆大小是8g,新生代是4g,這里根據實際生產服務器的內存大小,然后進行調整,比如:物理機是48g內存,堆內存可以給到20g,新生代給到8g,剩下的一些留給操作系統。
-XX:+UseG1GC -XX:G1HeapRegionSize=16m :選擇G1垃圾回收器來做分代回收,對新生代和老年代都用G1回收。這里把G1的region設置為16m,是因為物理內存比較大,如果物理內存不多時,可以設置成2m,設置大,是可以防止region數量過多。region的含義是:G1的各代存儲地址是不連續的,每一代都使用了n個不連續的大小相同的Region,每個Region占有一塊連續的虛擬內存地址,如下圖所示:
在rocketmq/distribution/target/apache-rocketmq/conf/dledger目錄下面的配置文件中,可以找到sendMessageThreadPoolNums=16參數,該參數的意思是:RocketMQ內部用來發送消息的線程池的線程數量,默認是16,如果機器的CPU是24核的話,該參數的值可以設置成24或者30
ons 阿里云 rocketMQ
ons 默認有兩個brokerName組,分別有0-7共16個隊列
還有兩個死信隊列 topic是 %RETRY%+tag
consumer15分鐘消費超時,broker會重發消息
輪詢發送到broker隊列
如果發送失敗會換個隊列
自動創建topic時設置隊列數量
ons不允許自動創建topic,也不允許修改隊列數量
平均分配可消費的 Broker 對應的消息隊列 c1對應b1,b2,b3 c2對應d1,d2,d3
以環狀輪流分Broker
每個Consume都訂閱每個Broker
rocketmq配置
borker配置說明文檔
#broker所屬的集群名字
brokerClusterName=rocketmq-cluster
#broker名字,同個集群中的每個broker應當具有它自己獨有的名字
brokerName=broker-a
#設置主broker和從broker? 其中0 表示 主機,0 表示 從機
brokerId=0
#nameServer地址(地址為ip:端口),多個地址之間用分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=4
#是否允許 Broker 自動創建Topic,測試時可以開啟,實用時關閉
autoCreateTopicEnable=true
#是否允許 Broker 自動創建訂閱組,測試時可以開啟,實用時關閉
#在pull形式消費時若設置了falsename會報subscription group not exist,且收不到消息,在push形式消費時沒有影響
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#haService中使用
haListenPort=10912
#主要用于slave同步master
fastListenPort=10909
#定時刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留最長時間,默認 48 小時
fileReservedTime=120
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#強制刪除文件時間間隔(單位毫秒)
#destroyMapedFileIntervalForcibly=120000
#定期檢查Hanged文件間隔時間(單位毫秒)
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間,磁盤空間使用率不能超過88%
diskMaxUsedSpaceRatio=88
#存儲總路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/store/index
#異常退出產生的文件存儲路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#Commitlog每次刷盤最少頁數,每頁4kb
flushCommitLogLeastPages=4
#ConsumeQueue每次刷盤最頁數,每頁4kb
#flushConsumeQueueLeastPages=2
#刷盤時間間隔(單位毫秒),此間隔時間優先級高于上面兩個參數,即當時間間隔超過之后直接進行刷盤,不考慮頁數問題
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色 (1) ASYNC_MASTER 異步復制Master (2) SYNC_MASTER 同步雙寫Master (3) SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式 (1) ASYNC_FLUSH 異步刷盤? (2)SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#是否開啟事務check過程,消息體量大的時候可以不開啟,默認為關閉狀態
checkTransactionMessageEnable=false
#發消息線程池數量(如果不做配置,個數為16+(核*線程)*4)
#sendMessageThreadPoolNums=128
#拉消息線程池數量(如果不做配置,個數為16+(核*線程)*4)
#pullMessageThreadPoolNums=12
參考資源鏈接
本文題目:rocketmq阿里云服務器配置 阿里云搭建mqtt服務器
URL分享:http://www.xueling.net.cn/article/ddeojhh.html