溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

RocketMQ如何實現(xiàn)性能優(yōu)化

發(fā)布時間:2021-11-18 09:29:59 來源:億速云 閱讀:773 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下RocketMQ如何實現(xiàn)性能優(yōu)化,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、系統(tǒng)優(yōu)化
1.最大文件數(shù)

limits.conf 設(shè)置用戶能打開的最大文件數(shù)

vim /etc/security/limits.conf
# End of file
baseuser soft nofile 655360
baseuser hard nofile 655360
* soft nofile 655360
* hard nofile 655360

2.系統(tǒng)參數(shù)調(diào)整

vim /etc/sysctl.conf
vm.overcommit_memory=1
vm.drop_caches=1
vm.zone_reclaim_mode=0
vm.max_map_count=655360
vm.dirty_background_ratio=50
vm.dirty_ratio=50
vm.dirty_writeback_centisecs=360000
vm.page-cluster=3
vm.swappiness=1
sysctl -p

參數(shù)說明1.overcommit_memory

是否允許內(nèi)存的過量分配
當(dāng)為0的時候,當(dāng)用戶申請內(nèi)存的時候,內(nèi)核會去檢查是否有這么大的內(nèi)存空間
當(dāng)為1的時候,內(nèi)核始終認為,有足夠大的內(nèi)存空間,直到它用完了為止
當(dāng)為2的時候,內(nèi)核禁止任何形式的過量分配內(nèi)存

2.drop_caches

寫入的時候,內(nèi)核會清空緩存,騰出內(nèi)存來,相當(dāng)于sync
寫1的時候,會清空頁緩存,就是文件
寫2的時候,會清空inode和目錄樹
寫3的時候,都清空
This is a non-destructive operation and will only free things that are completely unused.
Dirty objects will continue to be in use until written out to disk and are not freeable.
If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.

3.zone_reclaim_mode

如果為0的話,那么系統(tǒng)會傾向于從其他節(jié)點分配內(nèi)存
如果為1的話,那么系統(tǒng)會傾向于從本地節(jié)點回收Cache內(nèi)存多數(shù)時候

4.max_map_count

定義了一個進程能擁有的最多的內(nèi)存區(qū)域,默認為65536

5.dirty_background_bytes/dirty_background_ratio

當(dāng)dirty cache到了多少的時候,就啟動pdflush進程,將dirty cache寫回磁盤
當(dāng)有dirty_background_bytes存在的時候,dirty_background_ratio是被自動計算的

6.dirty_bytes/dirty_ratio

當(dāng)一個進程的dirty cache到了多少的時候,啟動pdflush進程,將dirty cache寫回磁盤
當(dāng)dirty_bytes存在的時候,dirty_ratio是被自動計算的

7.dirty_writeback_centisecs

pdflush每隔多久,自動運行一次(單位是百分之一秒)

8.page-cluster

每次swap in或者swap out操作多少內(nèi)存頁為2的指數(shù)。等于0的時候,為1頁;等于1的時候,為2頁;等于2的時候,為4頁

9.swappiness

swappiness=0 僅在內(nèi)存不足的情況下,當(dāng)剩余空閑內(nèi)存低于vm.min_free_kbytes limit時,使用交換空間
swappiness=1 內(nèi)核版本3.5及以上、Red Hat內(nèi)核版本2.6.32-303及以上,進行最少量的交換,而不禁用交換
swappiness=10 當(dāng)系統(tǒng)存在足夠內(nèi)存時,推薦設(shè)置為該值以提高性能
swappiness=60 默認值
swappiness=100 內(nèi)核將積極的使用交換空間

二、RocketMQ性能調(diào)優(yōu)

線上RocketMQ的JVM未做調(diào)優(yōu),堆內(nèi)存使用8G;主要從RocketMQ配置參數(shù)方面梳理下。

1.開啟異步刷盤

flushDiskType=ASYNC_FLUSH
同步刷盤TPS過低,較難滿足業(yè)務(wù)發(fā)展需求

2.開啟堆外內(nèi)存設(shè)置

transientStorePoolEnable=true
消息寫入到堆外內(nèi)存,消費時從pageCache消費,讀寫分離,提升集群性能

3.開啟文件預(yù)熱

warmMapedFileEnable=true
開啟文件預(yù)熱,避免日志文件在分配內(nèi)存時缺頁中斷

4.開啟Slave讀權(quán)限

slaveReadEnable=true
消息占用物理內(nèi)存的大小通過accessMessageInMemoryMaxRatio來配置默認為40%;如果消費的消息不在內(nèi)存中,開啟slaveReadEnable時會從slave節(jié)點讀取;提高Master內(nèi)存利用率

5.關(guān)閉堆內(nèi)存據(jù)傳輸

transferMsgByHeap默認true設(shè)置為false
Broker響應(yīng)消費請求時,不必將數(shù)據(jù)重新讀到堆內(nèi)存再發(fā)送給客戶端;直接從PageCache將數(shù)據(jù)發(fā)送給客戶端

看完了這篇文章,相信你對“RocketMQ如何實現(xiàn)性能優(yōu)化”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI