mysql connection不断增加
程序运行以后,刷新页面,在mysql的status里面检测到Threads_connected的值不断上升。

对程序断点调试,发现,是由于下面的代码导致。
class ConnectionMySQL(object):
"""
MySQL
""" def __init__(self):
self.mypool = pool.QueuePool(self.getconn, pool_size=15, timeout=30)
self.conn = self.mypool.connect()
print self.conn def getconn(self):
c = libdb.connect(host=configeApp.DB_HOST, port=configeApp.DB_PORT, user=configeApp.DB_USER,
passwd=configeApp.DB_PASSWD, db=configeApp.DB_DATABASE, use_unicode=True, charset='utf8')
return c def ExceptionHandling_mysql(self,sql):
try:
cur = self.conn.cursor(libdb.cursors.DictCursor)
rowcount = cur.execute(sql)
self.conn.commit()
result = cur.fetchall()
while cur.nextset(): pass
except Exception, e:
print 'This is mysql: %s' % (sql)
print e
result = [] self.mysql_del(cur)
return result def mysql_del(self, cur):
if cur:
cur.close() def mysql_delCon(self):
if self.conn:
self.conn.close()
问题在于,每次我创建了ConnectionMySQL的对象cm,在使用完毕,调用cm.mysql_delCon(),并没有真正的销毁掉connection对象。也就是mysql的connection是没有关闭的,导致了connection不断增加。
于是,我以我自己的需求,我不建立连接池,直接获取connection对象,那么可以解决问题。如果为了和同事共用代码,就需要在我不需要链接的时候,把连接池里的conn对象包括连接池一起销毁掉。
查看class QueuePool(Pool)类的源代码,找到函数dipose可以实现销毁自己的功能:
def dispose(self):
while True:
try:
conn = self._pool.get(False)
conn.close()
except sqla_queue.Empty:
break self._overflow = 0 - self.size()
self.logger.info("Pool disposed. %s", self.status())
于是,修改mysql_delCon函数为:
def mysql_delCon(self):
if self.conn:
self.conn.close()
if self.mypool:
self.mypool.dispose()
测试,也能正常工作。Threads_connected不再持续增加。
mysql connection不断增加的更多相关文章
- MySQL基础知识:MySQL Connection和Session
		在connection的生命里,会一直有一个user thread(以及user thread对应的THD)陪伴它. Connection和Session概念 来自Stackoverflow的一个回答 ... 
- mysql connection refused
		mysql数据库认证的时候和别的服务器不一样,即使mysqld数据库服务器没有启动,使用mysql这种客户端程序去连接,也要先输入密码,从而使人有一种错觉,以会服务器已经正常启动了.是不是密码或是主机 ... 
- Too Many Connections: How to Increase the MySQL Connection Count To Avoid This Problem
		1.问题描述 在启动使用mysql数据库的项目时,遇到一个报错,如下: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConn ... 
- MySQL: Connection Refused,调整 mysql.ini中的 max_connections
		连接相同的结构的MySQL数据库,一套库Tomcat启动正常,另一套库一直报Connection Refused. 可以断定是连接数太小了.查找mysql.ini中的 max_connections, ... 
- mac mysql connection
		随着网络日益发展还有os x用户的增多,有可能会需要在自己的x系统中运行mysql+php环境,比如架设网站或者测试之类.简单步骤如下: 1.下载MySQL 5.x 发行版,解压并安装映像中的两个安装 ... 
- Ubuntu远程连接MySQL(connection refused)解决方法
		一.判断ubuntu是否开启防火墙 sudo ufw status 开放防火墙3306端口 sudo ufw allow 3306 二.查看3306端口是否打开 注意:红色框框表示3306绑定的ip ... 
- MySQL: Connection Character Sets and Collations
		character_set_server collation_servercharacter_set_databasecollation_database character_set_clientch ... 
- mysql connection phase(未整理)
		14.2.1 初始握手初始握手从服务器发送 Initial_Handshake_Packet开始.在这之后,客户端可以选择是否通过SSL_Connection_Request_Packet发送SSL连 ... 
- python使用mysql connection获取数据感知不到数据变化问题
		在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: import MySQL ... 
随机推荐
- JVM ,Java paper
			http://files.cnblogs.com/files/WCFGROUP/IntroductiontoCompilerConstructioninaJavaWorld.pdf A Fast Wr ... 
- 每日英语:Can Going In and Out of Air Conditioning Cause Colds?
			For most people, summer involves numerous daily shifts between scorching outdoor heat and frosty air ... 
- 工作流模式 (zhuan)
			http://www.cnblogs.com/soundcode/archive/2010/12/30/1922283.html *********************************** ... 
- Mysql通过一个限制条件,查出多条不同的记录
			表1和表2是不同数据库中的同名table,但是发现表1中的查询和表2中的查询有区别,(事实是表1的查询是对的.) 表1的查询结果 mysql> select * from slot_value ... 
- 腾讯云Ubuntu挂载硬盘空间
			第一.检查硬盘设备是否有数据盘 42G是系统盘那么就剩下了200G的剩余空间,那么下面我就把这200G挂载. 查询命令: sudo fdisk -l 我们可以看到有200GB的数据盘没有挂载,看好前 ... 
- C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)
			今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1.要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证:2.要可以对员工信 ... 
- JavaScript(js)文件路径字符串中丢失"\"斜线的解决方法
			在刚刚的开发过程中,遇到一个JavaScript 文件路径字符串中丢失"\"的问题,解决过程如下: 背景:cs文件中获取一段包含有路径信息的字符串,将此字符串做为参数传递给前台as ... 
- 关于github上开源nineoldandroids兼容动画的笔记
			github上面有个样例非常好的列举了NineOldAndroids兼容动画的使用方法.下载了下来然后执行測试了下: 由于要引用nineoldandroids的项目,我这里直接把它的源码拷贝进去了,用 ... 
- 泛型方法前为什么要加<T>
			package com.test05.myTest; class Fruit { public String toString() { return "Fruit"; } } cl ... 
- Android——事件处理模型一(基于回调机制的事件处理)(转)
			Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理.Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通 ... 
