日期:2014-05-18  浏览次数:20577 次

关于proxool连接,访问量大了以后,出现问题!
我用了proxool链接方式,我的页面同一时刻会有很多交互量,连接数比较多,我设置了最大连接数50,但是通过后台查看连接数状态发现,发现如下:
Connections:   45   (active),   5   (available),   50   (max)
Served:   66536  
Refused:   2012   (这个数据要服务重启后才会清掉,严重导致了我的网站访问很慢,而且linux下mysql的进程也变得很多,导致服务器都变得很慢)
请问这个问题怎么解决?急!
也看过相关的贴,说可能是连接用了没有关闭掉,但是经过查证,都关闭了,访问量少时,一切都很正常的:
Connections:   3   (active),   4   (available),   50   (max)
Served:   66536  
Refused:   0

*********************************************************************
我的部分代码如下:
/**
  *   初始化配置文件
  */
    static   synchronized   public   DBConnectionPoolManager   getInstance()  
  {
if   (null   ==   dbcpm)
dbcpm   =   new   DBConnectionPoolManager();
return   dbcpm;
  }


/**
  *创建连接
  */
      public   Connection   getConnection()   {
          try   {
  con   =   DriverManager.getConnection( "proxool.xml-db ");
}   catch   (Exception   e)   {
  System.out.println( "Connection   failed   !   "   +   e.getMessage());
  }
    con;
}


/**
  *关闭连接
  */
public   void   close()   {
try   {
if   (rs   !=   null)   {
rs.close();
}
if   (stmt   !=   null)   {
stmt.close();
}
if   (prestmt   !=   null)   {
prestmt.close();
}
if   (con   !=   null)   {
con.close();
System.out.println( "关闭连接.. ");
}
}   catch   (Exception   e)   {
}
}
具体方法调用大概流程如下:
  com.gltb.db.DBConnect   dbConnect=   new   com.gltb.db.DBConnect();
    dbConnect.createConnection();
    dbConnect.executeQuery();
    dbConnect.close();
    (部分代码省略!)




------解决方案--------------------
很明显,有5个连接未关闭(5 (available) ).
查查代码,肯定有个地方没有写 conn.close