Python中 mysql.connector.pooling的8小时超时问题
背景
工作中一个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["database"] = self._database 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()
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python3入门(二)运算符
Python语言支持以下类型的运算符: 算术运算符 比较运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 接下来带着大家一起学习下这些 一、算术运算符 运算符 描述 + 两个对象相加 - 表示负数或者两个数相减 * 两个数相乘或者返回一个重复若干次的字符串 / 两个数相除 % 取模,返回除法的余数 ** 幂,返回一个数的几次幂,比如10**2表示10的2次方 // 取整数,两个数相除,向下取整数,比如9//2结果为4 案例: a = 2 b = 1 c = 3 # 加法 结果为:3 print(a + b) # 减法 结果为:1 print(a - b) # 乘法 结果为:2 print(a * b) # 除法 结果为:2.0 print(a / b) # 取模 结果为:0 print(a % b) # 幂 结果为:2 print(a ** b) # 除法取整 结果为:1 print(c // a) 二、比较运算符 运算符 描述 == 比较两个对象是否相等 != 比较两个对象是否不相等 > 比较一个数字是否大于另一个数字 < 比较一个数字是否小...
- 下一篇
突破Java面试(18)-消息队列面试技巧总结
Github 其实如果我是面试官的话,我如果感觉你都把刚才那些问题都答出来了,我可能会继续刨根问底,深挖,问你,直到把你给问倒 消息队列,kafka,复制的底层原理,leader选举的算法,增加partition以后的rebalance算法,扣很多很多的细节,如何优化kafka写入的吞吐量 其实这块如果挖深了可以问的极其深,如果是我来深挖,可能会挖到ES底层的相关度评分算法(TF/IDF算法)、deep paging、上千万数据批处理、跨机房多集群同步、搜索效果优化,等等很多的实际生产问题。 一种比较水的面试官,他可能还掌握不到我们这个面试突击教程水准,他其实连我们教程里的这些问题都没问到位 比较nice的面试官,问的差不多了,对你还挺欣赏的,基本上就让你过了 比较hard的面试官,干倒,虐你,故意要让你出丑,我不是这种,我只不过严格,我希望
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境