pymysql.err.OperationalError: (1040, u'Too many connections')

本文适用linux系统下的mysql
适用问题:程序连接mysql,且有正常close连接。但是某个时刻报错1040, u’Too many connections’
产生的原因:客户端程序close,但是mysql依然保持连接,只是连接处于睡眠状态。默认mysql保持连接8小时,超过8小时后连接关闭

问题查看:
连接数据库 mysql -u xxx -p
查看最大连接数和使用连接数
show variables like ‘max_connections’; 显示214,默认保留一个连接给管理员,所以最大连接数为215
show global status like ‘Max_used_connections’; 显示215,当前连接和程序连接
show processlist 可以看到程序不在运行但是有很多程序的连接依然存在
show status like ‘Threads%’; Threads_connected | 57 这个数值指的是打开的连接数; Threads_running | 4 这个数值指的是激活的连接数
从上面可以确定,mysql存在着大量的未激活连接

解决方法:
一、治标法:
重启mysql:
service mysql stop
service mysql start

二、治本法:
1、修改mysql数据库的连接的保持时间(不推荐)
修改/etc/mysql/my.cnf中[mysqld]下增加
interactive_timeout=600
wait_timeout=600
网上其他教程为连接数据库后修改全局变量,但是出现问题为每次重启数据库,mysql读取配置文件后,设置的值重新设为默认值

2、连接池

3、客户端程序设置连接(我的程序并没有这种设置,唉)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值