Kevin开发日记(一):MQ与数据库的消费问题

Kevin开发日记(一):MQ与数据库的消费问题

1.背景

1.现有MQ,负责传递消息至Java模块
2.现有Java模块,负责接收来自MQ的消息并持久化至数据库

2.问题

MQ的消费情况非常慢,判断应该是Java模块存储部分出现问题。
(最令人疑惑的点出现了,五一前Java模块持久化速度正常,仍能以5000+条/s速率消费,五一过后一来,直接0.2/s,这个消费速度差异的原因还是没有找到)

3.原因

1.打印了持久化数据的耗时,发现确实很慢,但是又都是插入操作,即使再慢也不能插一两条数据耗时个10s+吧(疑惑脸)

4.措施

1.修改了RabbitMQ的listener的并发数量,由5改为了1,也就是从五个消费者变为了一个消费者。考虑是不是多个消费者的并发插入操作与数据库事务存在关联影响
结果:没啥作用

2.采用异步模式操作数据库,在方法上打了@Async标签
结果:效果显著,RabbitMQ没有再出现堆积的情况
疑惑:这也是非常令我疑惑的一点。原流程就是从RabbitMQ拿到消息,然后转换消息格式后就存放至数据库,我没有太明白异步和同步在此的效能区别在哪里。看来需要看看@Async标签的具体作用。

3.配置线程池
结果:未有结果。因为另外一些数据量较多的处理单元采用了Redis作为中间缓存,最开始是与其他处理单元共用了一个线程池,可能出现线程争抢的情况。然后又由于在存储处加上了@Async异步,无法观察单一变量效果。

4.批量插入
结果:效果不错。将原来的单条插入换成了saveBatch,性能有一定提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值