[Enhancement] rocketmq 单节点发送消息tps只能到1万多
Before Creating the Enhancement Request
- [x] I have confirmed that this should be classified as an enhancement rather than a bug/feature.
Summary
使用rocketmq官方的benchmak producer.sh脚本测试rocketmq发送性能,用的rocketmq 5.3.3版本 部署了1个broker节点, 验证脚本如下:./producer.sh -t cluster-perf-tst8 -w 20 -s 1024 -n rocketmq2-nameserver.rocketmq:9876 性能表现比较差,发送消息tps只能到1万多,broker给的堆内存为8G,异步落盘,使用的也是ssd硬盘,不知道为什么性能这么差
Motivation
broker性能比较差
Describe the Solution You'd Like
不知哪里配置不够,但是性能着实比较差
Describe Alternatives You've Considered
希望提升rocketmq tps性能
Additional Context
No response
./producer.sh -t cluster-perf-tst8 -w 1-s 1024 -n rocketmq2-nameserver.rocketmq:9876 测试tps在700-1000之间
巧了,我也正在部署5.3.3集群,今天刚压测的,broker 一个节点,jvm 给8G,TPS打到3.8万,采用了一半CPU 和一半内存。性能瓶颈在硬盘,util飙到95%
巧了,我也正在部署5.3.3集群,今天刚压测的,broker 一个节点,jvm 给8G,TPS打到3.8万,采用了一半CPU 和一半内存。性能瓶颈在硬盘,util飙到95%
请问你的验证脚本是啥,还有就是proxy、broker的参数
巧了,我也正在部署5.3.3集群,今天刚压测的,broker 一个节点,jvm 给8G,TPS打到3.8万,采用了一半CPU 和一半内存。性能瓶颈在硬盘,util飙到95%
请问你的验证脚本是啥,还有就是proxy、broker的参数 java -cp 'lib/*' org.apache.rocketmq.example.benchmark.Producer -n "mq1:9876;mq2:9876;mq3:9876" -t "normalTopic" -s 1024 -w 150
巧了,我也正在部署5.3.3集群,今天刚压测的,broker 一个节点,jvm 给8G,TPS打到3.8万,采用了一半CPU 和一半内存。性能瓶颈在硬盘,util飙到95%
请问你的验证脚本是啥,还有就是proxy、broker的参数 java -cp 'lib/*' org.apache.rocketmq.example.benchmark.Producer -n "mq1:9876;mq2:9876;mq3:9876" -t "normalTopic" -s 1024 -w 150
咱俩的写入线程数是不一样的,请问你这边有优化过broker参数么(比如broker的sendmessage线程数等等),还是直接部署的,不知你那边验证的延迟有多大,这个也很重要
巧了,我也正在部署5.3.3集群,今天刚压测的,broker 一个节点,jvm 给8G,TPS打到3.8万,采用了一半CPU 和一半内存。性能瓶颈在硬盘,util飙到95%
请问你的验证脚本是啥,还有就是proxy、broker的参数 java -cp 'lib/*' org.apache.rocketmq.example.benchmark.Producer -n "mq1:9876;mq2:9876;mq3:9876" -t "normalTopic" -s 1024 -w 150
咱俩的写入线程数是不一样的,请问你这边有优化过broker参数么(比如broker的sendmessage线程数等等),还是直接部署的,不知你那边验证的延迟有多大,这个也很重要
我是docker compose 部署的,
`version: '3.8' services: rmqnamesrv: image: apache/rocketmq:5.3.3 container_name: rmqnamesrv ports: - "9876:9876" volumes: # 将日志挂载到 /data - /data/rocketmq/namesrv/logs:/home/rocketmq/logs # GC 日志挂载 - /data/rocketmq/namesrv/gclogs:/home/rocketmq/gclogs networks: - rocketmq extra_hosts: - "mq1:xxx.xx.xx.xx" # 示例:mq1 映射到 xxx.xx.xx.xx - "mq2:xxx.xx.xx.xx" # 示例:mq2 映射到 xxx.xx.xx.xx - "mq3:xxx.xx.xx.xx" # 示例:mq3 映射到 xxx.xx.xx.xx environment: - JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -XX:MaxGCPauseMillis=100 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M -Xloggc:/home/rocketmq/gclogs/gc.log command: sh mqnamesrv restart: unless-stopped user: "3000:3000" deploy: resources: limits: cpus: '0.5' memory: 1G reservations: cpus: '0.1' memory: 256M
rmqbroker-c: image: apache/rocketmq:5.3.3 container_name: rmqbroker-c ports: - "10909:10909" - "10911:10911" - "10912:10912" - "8080:8080" - "8081:8081" extra_hosts: - "mq1:xxx.xx.xx.xx" # 示例:mq1 映射到 xxx.xx.xx.xx - "mq2:xxx.xx.xx.xx" # 示例:mq2 映射到 xxx.xx.xx.xx - "mq3:xxx.xx.xx.xx" # 示例:mq3 映射到 xxx.xx.xx.xx environment: - NAMESRV_ADDR=mq1:9876;mq2:9876;mq3:9876 - JAVA_OPT_EXT=-Xms8g -Xmx8g -Xmn4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:MaxGCPauseMillis=200 -XX:MaxDirectMemorySize=2g -XX:G1HeapRegionSize=16m -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Xloggc:/home/rocketmq/gclogs/gc.log depends_on: - rmqnamesrv volumes: # 配置文件从 /opt/rocketmq 加载 - ./broker-c/conf/broker.conf:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf # 将日志和存储挂载到 /data - /data/rocketmq/broker-c/logs:/home/rocketmq/logs - /data/rocketmq/broker-c/store:/home/rocketmq/store # GC 日志挂载 - /data/rocketmq/broker-c/gclogs:/home/rocketmq/gclogs networks: - rocketmq command: sh mqbroker -c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf --enable-proxy restart: unless-stopped user: "3000:3000" deploy: resources: limits: cpus: '4.0' memory: 12G reservations: cpus: '1.0' memory: 3G rmqbroker-a-s: image: apache/rocketmq:5.3.3 container_name: rmqbroker-a-s ports: - "11909:11909" # Slave A需要不同端口 - "11911:11911" - "11912:11912" extra_hosts: - "mq1:xxx.xx.xx.xx" # 示例:mq1 映射到 xxx.xx.xx.xx - "mq2:xxx.xx.xx.xx" # 示例:mq2 映射到 xxx.xx.xx.xx - "mq3:xxx.xx.xx.xx" # 示例:mq3 映射到 xxx.xx.xx.xx environment: - NAMESRV_ADDR=mq1:9876;mq2:9876;mq3:9876 - JAVA_OPT_EXT=-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxGCPauseMillis=200 -XX:MaxDirectMemorySize=1g -XX:G1HeapRegionSize=16m -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M -Xloggc:/home/rocketmq/gclogs/gc.log depends_on: - rmqnamesrv volumes: # 配置文件从 /opt/rocketmq 加载 - ./broker-a-s/conf/broker.conf:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf # 将日志和存储挂载到 /data - /data/rocketmq/broker-a-s/logs:/home/rocketmq/logs - /data/rocketmq/broker-a-s/store:/home/rocketmq/store # GC 日志挂载 - /data/rocketmq/broker-a-s/gclogs:/home/rocketmq/gclogs networks: - rocketmq command: sh mqbroker -c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf restart: unless-stopped user: "3000:3000" deploy: resources: limits: cpus: '2.5' memory: 8G reservations: cpus: '0.75' memory: 2G networks: rocketmq: name: rocketmq driver: bridge`
%util 打到95% 性能瓶颈在硬盘,CPU和内存才用到一半,我是在8核32G机器测的。内存和CPU 不是瓶颈因素