程序运行以后,刷新页面,在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不断增加的更多相关文章

  1. MySQL基础知识:MySQL Connection和Session

    在connection的生命里,会一直有一个user thread(以及user thread对应的THD)陪伴它. Connection和Session概念 来自Stackoverflow的一个回答 ...

  2. mysql connection refused

    mysql数据库认证的时候和别的服务器不一样,即使mysqld数据库服务器没有启动,使用mysql这种客户端程序去连接,也要先输入密码,从而使人有一种错觉,以会服务器已经正常启动了.是不是密码或是主机 ...

  3. Too Many Connections: How to Increase the MySQL Connection Count To Avoid This Problem

    1.问题描述 在启动使用mysql数据库的项目时,遇到一个报错,如下: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConn ...

  4. MySQL: Connection Refused,调整 mysql.ini中的 max_connections

    连接相同的结构的MySQL数据库,一套库Tomcat启动正常,另一套库一直报Connection Refused. 可以断定是连接数太小了.查找mysql.ini中的 max_connections, ...

  5. mac mysql connection

    随着网络日益发展还有os x用户的增多,有可能会需要在自己的x系统中运行mysql+php环境,比如架设网站或者测试之类.简单步骤如下: 1.下载MySQL 5.x 发行版,解压并安装映像中的两个安装 ...

  6. Ubuntu远程连接MySQL(connection refused)解决方法

    一.判断ubuntu是否开启防火墙 sudo ufw status 开放防火墙3306端口 sudo ufw allow 3306 二.查看3306端口是否打开  注意:红色框框表示3306绑定的ip ...

  7. MySQL: Connection Character Sets and Collations

    character_set_server collation_servercharacter_set_databasecollation_database character_set_clientch ...

  8. mysql connection phase(未整理)

    14.2.1 初始握手初始握手从服务器发送 Initial_Handshake_Packet开始.在这之后,客户端可以选择是否通过SSL_Connection_Request_Packet发送SSL连 ...

  9. python使用mysql connection获取数据感知不到数据变化问题

    在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: import MySQL ...

随机推荐

  1. 改善C#程序的建议9:使用Task代替ThreadPool和Thread

    一:Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: 1: ThreadPool不支持线程的取消.完成.失败通知等交互 ...

  2. 【ActiveMQ】ActiveMQ在CentOS的搭建与使用

    下载 到ActiveMQ官网,找到下载点. 目前, 官网为http://activemq.apache.org/. 我们下载目前最新的版本吧,当前的Linux版本下载地址之一为:http://apac ...

  3. SQLYog Enterprise注册码分享

    SQLYog Enterprise注册码 Name:3ddownSerial:7c799fe606582b12 用户名:luowuzhe注册码:c84a12fa6ea3cb54   SQLyog 8. ...

  4. tab栏切换fengz

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. pssh安装和使用

    前提,安装了python.pssh安装下载pssh-2.2.2.tar.gztar zxvf pssh-2.2.2.tar.gzcd pssh-2.2.2python setup.py buildpy ...

  6. python 将txt内容写入excel

    #!/usr/bin/env python # -*- coding: utf-8 -* import os import xlrd import xlwt import datetime impor ...

  7. mysql 安装 注意点

    选择连接数: next next 选择编码 next next 输入root默认密码 勾上 允许远程连接本机

  8. Oracle 外键约束子表、父表

    CREATE TABLE employees(     employee_id      NUMBER(6),     last_name        VARCHAR2(25) NOT NULL, ...

  9. sqlserver日期函数<转>

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  10. Node.js获取mac网卡地址

    一.关于getmac node.js没有直接获取mac网卡地址的模块,此时我们需要借助于第三方模块getmac.getmac 可以帮助我们 获取当前机器上的mac地址.gatmac 下载地址为:htt ...