1,sql不走索引
线上一个sql跑了一分半,将sql拿出来,explain后,发现有一张表没有走索引,查询条件的字段是建立了索引的,放在测试环境也是可以正常走索引,放到线上环境就不走索引了,线上和测试一样的数据,三万多条
推测是数据库本身有问题或者数据库配置有问题
一同事推测可能数据量太少,往里面加数据,出现情况有时候走索引,有时候不走索引
询问云服务商,给的解释是,我们的数据库内存太大(32G),让mysql的执行优化器误认为全表扫描比走索引快,解决方案加for index,强制走索引
2,rocketmq消息分配极其不均
线上两台broker,都是主节点,本该两个分配的消息差不多,实际一个旱死,一个涝死,其中一台16G内存剩下100多M,线程也很多在等待
查询两个broker的配置,配置都是一样的
再查看生产者是否设置了负载均衡策略,发现没有设置,是默认的负载均衡策略
最后在控制台上发现有几个topic只配置了一个broker,而这几个topic是消息大户,在控制台上给这些topic添加上另一个broker后,两个broker消息趋向平均,占用内存也下降了,线程等待的情况好多了