`
flashing
  • 浏览: 349693 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

诡异的RDS问题和springboot的devtools

阅读更多

一、、、

话说今天客户遇到了统计数据查询非常缓慢的问题,情况比较诡异,在某次程序升级之后突然发生。

鉴于之前rds(mysql5.6)表现还不错,所以以为可能是用户单表数据接近千万所以导致查询有问题,产生瓶颈了,导致iops一直跑满。然而数据全部同步到本地的mysql5.7之后发现,本地速度很快啊。。。

只好开始看aliyun的慢日志,发现竟然有些查询需要近20分钟!把这些查询挑出来explain,悲催的发现,本地和服务器的查询计划完全不一样...服务器的根本就没用到索引,虽然索引存在。

再然后就开始了漫长的分析过程,why why why...后来联系一位oracle master的朋友咨询了一下才明白,这种破事竟然很正常...最终我灵机一动,删掉了服务器的索引然后重建,发现终于查询计划可以用上索引了,看来是索引莫名其妙的失效了!

这个事情让我对rds的机制产生了非常不靠谱的赶脚,另外即使能用索引了,服务器和本地使用的索引竟然不一样,完全莫名其妙;比如用状态和时间查询,存在这两个字段的联合索引,竟然在rds mysql 5.6上会落到另外一个奇怪的索引上。

下面再买rds尽量买5.7了,我觉得应该是mysql5.6的不靠谱导致的;另外这个数据量,也许应该考虑一下分区了。

二、、、

开发团队之前用springboot的时候一直在idea里面配合jrebel,结果新来了一批开发人员之后,jrebel安装的乱七八糟,导致做点什么都得重启项目,实在崩溃。

于是调查了一下发现springboot-devtools依赖竟然就是解决这个的,实在很意外,因为早几年知道spring loaded,这东西也是当时grails 2.x的自动编译加载的基础,实在不是太好用,没想到现在springboot又自己做了一个小插件,看起来似乎也不麻烦。

具体配置上也比较简单:

1.添加依赖(maven or gradle)

2.添加代码

System.setProperty("spring.devtools.restart.enabled", "false");

否则重新编译会引发项目自动重启

3.src/main/resources/config/application-dev.yml,spring.devtools.livereload.enabled: true

这个配置比较关键,会编译后自动加载,很好用。

另外说一下的是,如果有jrebel启动,devtools会自动禁用,采用jrebel;另外devtools好像不具备自动重新加载mybatis的能力,有这个需求最好是jrebel了。

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics