Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

文章讲述了在单服务器环境中部署多个项目时遇到的MySQL连接超时问题,通过分析发现是由于连接数达到上限。作者调整了MySQL的最大连接数并解决了启动失败的问题,强调了排查此类问题时需关注项目数量对数据库资源的影响。
摘要由CSDN通过智能技术生成

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
现象:同一服务器上同时启动多个相同项目做分服测试,结果是有的服务器成功启动,有的服务器启动失败,原因均为:mysql连接超时;

服务器情况:单服 centos7(32c64g) 上同时部署了 26个相同的多服拓展测试项目 + mysql5.7.18

问题解析:同服同项目情况下,多数(21个)项目成功启动,后续(5个)启动失败,而且均报mysql连接超时。那么可证明不是测试项目问题,而是mysql存在问题,再结合启动顺序和错误出现的时间来看,问题的关节点多半与连接数有关。结合这个结论,进入mysql后台,查看mysql最大连接数及当前连接数使用情况
          
        show variables like '%max_connection%';        -----    查看最大连接数(查询后默认值为:152)
          
        查看当前mysql连接数使用情况:show status like  'Threads%';  
        Threads_cached        0
        Threads_connected    151    --- 当前连接数
        Threads_created        157 --- 创建过的线程数
        Threads_running        1    --- 当前激活的连接数(数值一般小于connected)
        
        从以上查询结果中可以看出,连接数已经达到上限了,所以后续第22个项目启动时,自然是无连接可用了,所以需重新设置一下mysql的最大连接上限了。
            set global max_connections=1000;  -----        重新设置最大连接数(将连接上限改为:1000)
        
        后续再次启动第22个项目成功了,那么证明后续项目也是同样原因造成的,直接逐一启动即可。
        最后再次查看一下当前连接数:
            Threads_cached        0
            Threads_connected    189
            Threads_created        193
            Threads_running        1
结语:该问题存在诸多特殊性情况,单服模拟多项目分服拓展下造成了对同一mysql的大量连接。所以看了下网上的mysql版本原因对我并不适用,同时存在成功启动的项目,那么也在一方面证明了mysql是可用的,而结合连接数量的叠加以及启动顺序的差异,可以大概确认为mysql连接数上限存在问题。所以问题排查时需要先剖析问题本质,再对症下药。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值