记一次Calendar引起的bug,导致数据库连接达到最大

再一次调接口的过程中,发现后台有大量的数据库异常,报的错误是被加入mysql 异常hosts,需要使用命令flush-hosts清空。我看了一下我的后台有大量的数据量连接异常信息。花了很大的例如追踪,发现是因为Calendar解析时间段引起的。示例代码如下,

我通过requet拿到时间段的起始时间和终止时间,然后使用循环,把时间解析处理。例如begin_day="2019-10-17",end_day="2019-10-24"。那么解析出来的days就是8。我拿到时间段后,会去开启8个线程,每隔线程去数据库查询该天的数据。然后最后在主线程做一次汇总排序。代码一直运行的很好。直到这次bug出来。

前端的小伙伴换了前端的日历控件,传给我后台的时间有“年 月 日”格式变为了“日 年 月”格式。问题来了,同样的代码,如果

begin_day="17-2019-10",end_day="24-2019-10"。猜猜看会发生什么,我本来以为会被SimpleDateFormat解析异常,没想到代码正常运行,跑出来的days长度是2558。代码继续走,会开启2558个线程,每隔线程执行一个查询。就是因为这里一瞬间开启的线程过多,数据库扛不住压力了。导致被加入黑名单。严重的可能导致数据库瘫痪。

在此记录下次问题 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值