RocketMQ中,我的nameserver是1核2G。3台集群。broker是2主两从 4核8g的配置。我现在压测同步普通消息只到了10000左右。服务器的内存和cpu没有达到上线。接下来我该从哪些方面优化提高tps呢,可以给点建议吗?消息大小28字节
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的场景中,您已经搭建了一个3台Name Server集群和2主2从的Broker集群,并进行了同步普通消息的压测,但TPS仅达到10000左右,而服务器的CPU和内存资源尚未达到瓶颈。以下是一些优化建议,帮助您进一步提升TPS性能:
SYNC_FLUSH
),可以尝试切换为异步刷盘(ASYNC_FLUSH
)。异步刷盘会显著提高写入性能,但可能会增加数据丢失的风险。flushDiskType=ASYNC_FLUSH
sendMessageThreadPoolNums
和pullMessageThreadPoolNums
,以提高并发处理能力。sendMessageThreadPoolNums=16
pullMessageThreadPoolNums=16
List<Message> messages = new ArrayList<>();
for (int i = 0; i < batchSize; i++) {
messages.add(new Message("TopicTestMQ", "TagA", ("Hello MQ" + i).getBytes()));
}
SendResult sendResult = producer.send(messages);
SendMsgTimeoutMillis=1000
consumeThreadMin
和consumeThreadMax
参数来优化。consumeThreadMin=20
consumeThreadMax=64
ulimit -n
),并将其设置为更高的值(例如65535),以避免因文件描述符不足导致性能下降。-Xms4g -Xmx4g -XX:+UseG1GC
tools.sh
,或者使用专业的压测工具(如JMeter)。通过以上优化措施,您可以逐步提升同步普通消息的TPS。建议每次调整一个参数后重新进行压测,观察效果,以便找到最佳配置组合。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/