MySQL连接失败

最近接手了公司的一个软件项目,通过打印日志,发现该软件会偶发出现连接MySQL数据库失败的问题。

首先排查是否是网络问题导致的连接失败。对该软件和MySQL的3306端口进行抓包,发现连接数据库失败时并没有出现tcp三次握手失败的情况。并且该软件和MySQL是部署在同一台CentOS服务器上的,所以可以排除掉网络问题导致的连接数据库失败。

然后我们来排查是否是因为连接数的问题导致的连接失败。Navicat里面,点击“命令行界面”

查看MySQL当前连接数,输入:show processlist;

可以看到当前有110条连接,并且有很多连接的状态是Sleep,代表资源未释放。

然后我们再查看MySQL可以同时打开的最大连接数。在命令行界面输入:show variables like 'max_connections';

可以看到该MySQL被设置成最大允许同时打开151个连接。

所以到了这里我们可以推测是因为软件同时打开了过多的连接,导致的偶发连接数据库失败。针对该问题,我检查了接手软件的代码,发现代码存在bug,导致了偶发无法释放数据库连接。然后修改MySQL允许的最大连接数,修改MySQL启动参数文件:vi /etc/my.cnf,在最后一行加入:max_connections=300,这样就把MySQL的最大允许连接数从之前的151改成了300。


 

重启MySQL让设置生效,重新输入show variables like 'max_connections'; 可以发现最大连接数已经被修改了。

然后经过上述修改后,发现日志再没有打印连接MySQL失败的问题,说明确实是由于连接数的问题导致的连接失败。

参考:《mysql 查询连接数的几种方式

Mysql是长连接还是短连接?

mysql长连接和短连接的区别 mysql 短连接

mysql set global sql_mode重启时被重置

相关推荐

  1. node连接Mysql失败

    2024-04-23 22:16:02       58 阅读
  2. 记一次Mysql连接失败的处理过程

    2024-04-23 22:16:02       33 阅读
  3. vscode连接远程服务器失败

    2024-04-23 22:16:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 22:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 22:16:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 22:16:02       82 阅读
  4. Python语言-面向对象

    2024-04-23 22:16:02       91 阅读

热门阅读

  1. Spring Cloud Eureka面试题

    2024-04-23 22:16:02       26 阅读
  2. 【设计模式】观察者模式

    2024-04-23 22:16:02       35 阅读
  3. ecs150 project2 Unix Shell

    2024-04-23 22:16:02       31 阅读
  4. Vue3+Ant Design 父组件调用子组件方法

    2024-04-23 22:16:02       32 阅读
  5. 基于深度神经网络的图像识别技术研究

    2024-04-23 22:16:02       31 阅读
  6. vue-router学习4:嵌套路由

    2024-04-23 22:16:02       29 阅读
  7. nginx配置不同设备访问不同地址

    2024-04-23 22:16:02       37 阅读
  8. Cesium简单案例

    2024-04-23 22:16:02       29 阅读