背景
工作中一个Python项目中在连接mysql 时使用mysql.connector.pooling,实际使用中发现个别的数据库一段时间后连接全部断开
没有任何的预兆和错误。后来发现是由于mysql的8小时超时问题
关于mysql.connector.pooling
以下是我们自己实现的数据连接池类中的代码
···
res["host"] = self._host res["port"] = self._port res["user"] = self._user res["password"] = self._password res["data "] = self._data self.dbconfig = res pool = mysql.connector.pooling.MySQLConnectionPool( pool_name=pool_name, pool_size=pool_size, pool_reset_session=True, **self.dbconfig)···
定位到该问题时是因为在一次调用过程中 报错说连接池已经枯竭,一开始感觉不可思议,
于是定时在mysql服务器上
mysql -e "show processlist"发现每天夜里一定时间连接就会消息,观察时间才直到是因为8小时超时,因为此连接的都是一些查询任务,
而他们一般是业务后台使用,下班之后导致连接处于sleep状态太久
问题知道了,更让我疑惑的是难道python 的这个库没有做这件事情?事实情况就是如此,需要我们自己实现
解决的办法很简单 就是每次在获取连接的时候判断当前的连接数,不足是就重新创建
size = self.pool._pool_size qsize = self.pool._cnx_queue.qsize() if qsize < size: need_add_size = size - qsize for x in range(need_add_size): self.pool.add_connection() 继续阅读与本文标签相同的文章
上一篇 :
突破Java面试(18)-消息队列面试技巧总结
下一篇 :
回顾 | 阿里云实时计算专场 · 北京站
-
使用 Kustomize 帮你管理 kubernetes 应用(五):配合 kubedog 完善 CI/CD 的最后一步
2026-05-24栏目: 教程
-
SpringCloud组件之Feign
2026-05-24栏目: 教程
-
云栖开发者沙龙 - 数据库分库分表中间件(杭州站) 业内专家大咖齐聚,期待你的参与
2026-05-24栏目: 教程
-
干货 | Elasticsearch 趋势科技实战分享笔记
2026-05-24栏目: 教程
-
阿里云OSS同城冗余存储技术解析
2026-05-24栏目: 教程
