前言:
而今你们对“数据库用不了什么原因”大致比较关心,同学们都需要学习一些“数据库用不了什么原因”的相关内容。那么小编也在网上搜集了一些对于“数据库用不了什么原因””的相关文章,希望姐妹们能喜欢,你们快快来学习一下吧!简介
前两天开发人员找到我,说报表应用最近老是报无法获取数据库连接,而且重启报表应用也解决不了,找我一起排查一下。
无法获取连接库连接原因
我一听说应用无法获取数据库连接,立马就思考,是什么原因导致应用获取数据库连接呢,基本有4个原因
第一:应用出现故障,异常夯死,占着连接数不释放,导致正常的功能无法获取数据库连接数
第二:应用的jdbc配置的最大连接数过小。
第三:应用突然起量,导致数据库连接数不够。
第四:数据库出现慢SQL语句,导致服务器cpu,io资源消耗殆尽,导致数据库性能急剧下降,导致应用的数据库连接数不够。
排查过程
由于应用运维人员已经多次重启过报表应用,所以第一原因可以pass掉,开始排查第二个原因,于是让开发把jdbc的配置发给我看看。
连接数配置
jdbc.min_connections = 6jdbc.max_connections = 15
看到这个配置,根据我对报表应用的业务了解,最大15个连接数肯定是够的,因为报表应用使用人不多。
接着排查,是不是突然起量了呢,问了一下运维,运维说,报错的时候,基本没有人使用,所以这个原因也可以排除了。
是不是有慢SQL语句呢,于是看了zabbix监控,发现服务器的cpu,io资源使用很正常,没有毛刺。
这就很奇怪了,什么情况,就问运维人员,报表应用什么时间点报无法获取连接数的错误,他说一启动应用,过几分钟就开始报。听到这里,心里就咯噔一下,是不是报表应用启动之后,启动了大量的并发作业,导致数据库连接数不够呢。
于是找到报表开发,了解报表应用启动过程,开发表示,生产的报表启动之后,会启动100多个作业,而且作业都是同一时间并发执行的,听到这里,我基本就确定了连接数不够的原因了,这些并发作业,就像秒杀一下,突然起量,作业完成之后,就很空闲了。
解决方案
针对这个问题,我给开发提供了2个解决方案
1.修改报表作业执行逻辑,给每个作业设置定时启动时间,让这些作业错开执行
2.在代码修改完成之前,临时修改jdbc.max_connections为60,等代码上线之后,再改回15。
关注
1.如果您喜欢这篇文章,请点赞+转发。
2.如果您特别喜欢,请加关注。
标签: #数据库用不了什么原因