更新
以下壓測內容已作廢,rocketmq的tps上不來的核心問題,應該和我使用的VirtualBox的網卡配置有關係,因爲網卡或者網絡的抖動,導致TPS一直上不去,把虛擬網卡從intel的千M改爲virtio以後,現在的TPS已經到16000左右(單broker使用16G內存下,128個線程的生產者)
系統配置
版本 rocketmq 4.61
服務器 18G內存 VM 4核
運行方式 官方最小集羣 1個nameserver進程 3個 broker進程
壓測方式 : 基於官方生產者程序,改造爲64個線程的生產者.
備註:使用官方推薦的G1做回收器
原始JVM參數
-server -Xmx5g -Xms5g -XX:MaxGCPauseMillis=30 -XX:+UseG1GC -XX:G1HeapRegionSize=8m -XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -verbose:gc
-Xloggc:/dev/shm/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps
-XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch
-XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking
JVM主要參數 (Broker) | 系統Load(5分鐘) | 內存佔用/總內存 | Broker TPS | 年輕代 GC 次數 | 年輕代 GC 次數 | 平均gc耗時 | 生產者 等待 | 生產者報錯 |
---|---|---|---|---|---|---|---|---|
Xmx5g -Xms5g -XX:MaxGCPauseMillis=30 | 13.6 | 16.3G / 17.6G | 2 679 | 64 | 829 | 13.1 ms | 0 | 無 |
Xmx5g -Xms5g -XX:MaxGCPauseMillis=60 | 13.13 | 16.3G / 17.6G | 2 569 | 64 | 770 | 12.03 ms | 0 | 無 |
Xmx5g -Xms5g | 12.13 | 16.4G / 17.6G | 2 355 | - | - | - | - | broker busy, start flow control for a while |