New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MQ消息发送性能优化 #2258
Comments
初步的性能测试 (发送kafka)-- 目前测试只对一个目标表做单topic写入,batchSize 50 + timeout 100 构造的数据场景:(混合2张表的insert、update、delete),包含10个bantch的insert,单条update和随机单条delete
优化的性能测试 (2019-09-30)混合的DML场景测试:(canal server的cpu消耗大概在3个core)
单表的batch insert场景测试: (canal server的cpu消耗大概在4个core)
优化思路:发送MQ消息存在顺序性考虑,会有串行的代码路径,需要尽可能减少串行路径上的代价,比如序列化、分区散列、flatMessage对象转化等 优化的内容:
几个小tips:
优化小结:
影响性能的几个参数:
|
flatMessage支持一下包含GTID好不好。 |
现在如果ringbuffer设置太大,消息生产太快,kafkaproducer会OOM。 |
之前有issue提到多个topic下producer是串行执行的,可以改成并行执行 |
目前写kafka是单producer,写入没毛病但是consumer在poll的时候就非常少,每次1条1条的。 |
rocketmq 优化测试混合的DML场景测试:(canal server的cpu消耗大概在3个core)
单表的batch insert场景测试: (canal server的cpu消耗大概在3个core)
主要优化点:
整体的测试来看,canal对接rocketmq的吞吐性能要优于kafka |
同样是开启flatMessage为什么kafka和rocketmq差了一倍多? |
@rewerma 应该是后面优化的代码,我重新测试对齐了,差距没那么大,但rocketmq还是有一些优势.
|
请问如何将Producer改成并行的 |
目前canal原生支持了kafka/rocketmq/rabbitmq的消息发送,目前收到比较多的用户反馈发送MQ消息,存在部分的性能瓶颈,近期会更新一下相关的优化思路供大家参考
ps. pulsar官方也采用了canal作为默认的connector
The text was updated successfully, but these errors were encountered: