线上问题记录

线上环境中遇到SQL查询不走索引的问题,经排查可能因数据库内存过大导致优化器选择全表扫描。云服务商建议使用'FOR INDEX'强制走索引。同时,RocketMQ两台Broker消息分配不均,通过检查配置和Topic分配,发现部分消息大户只分配给一个Broker,调整后消息分配和资源使用趋于平衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,sql不走索引

线上一个sql跑了一分半,将sql拿出来,explain后,发现有一张表没有走索引,查询条件的字段是建立了索引的,放在测试环境也是可以正常走索引,放到线上环境就不走索引了,线上和测试一样的数据,三万多条
推测是数据库本身有问题或者数据库配置有问题
一同事推测可能数据量太少,往里面加数据,出现情况有时候走索引,有时候不走索引
询问云服务商,给的解释是,我们的数据库内存太大(32G),让mysql的执行优化器误认为全表扫描比走索引快,解决方案加for index,强制走索引

2,rocketmq消息分配极其不均

线上两台broker,都是主节点,本该两个分配的消息差不多,实际一个旱死,一个涝死,其中一台16G内存剩下100多M,线程也很多在等待
查询两个broker的配置,配置都是一样的
再查看生产者是否设置了负载均衡策略,发现没有设置,是默认的负载均衡策略
最后在控制台上发现有几个topic只配置了一个broker,而这几个topic是消息大户,在控制台上给这些topic添加上另一个broker后,两个broker消息趋向平均,占用内存也下降了,线程等待的情况好多了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值