如题!!服务器上面设置的数据库最大链接数是500,以前做过压力测试,数据库操过200都没有事,但是现在网站运行一段时间后,数据库链接操过60就出问题了,服务器日志就报java.sql.SQLException: Closed Connection,数据库程序里面根本就没有去关闭链接,请问大家,难道是我服务器配置有错吗,我还是个新手,请大家给点意见,不胜感激,跟JBOSS里面的数据库连接设置有关系吗,以前做压力测试的时候,JBOSS里面的设置基本上是没有动的,跟现在一样,ORACLE错误日志里面能看到出错的信息吗????????

解决方案 »

  1.   

    看这个异常信息是,你调用的数据库连接已经关闭了,但你使用时没有判断这个连接的状态而直接使用,所以造成这个异常,所以他告诉你这是一个Closed Connection(已经关闭的连接)
    有可能是连接池配置的问题,也可能是你代码实现的问题,具体看怎么实现的了
      

  2.   

    我用了数据库连接池,配置基本上也没有问题,我把工程里面的SQL语句优化了一下,效果好一点了,但是还是有这样的情况,当数据库连接陡增的时候(如果一个链接一个链接的增加是没有问题的),也就是在同一时间突然增加,服务器free内存突然降低,才10多M了,这个时候WEB就卡住了,再去请求链接池中的链接就提示Closed Connection,DBA分析师说我们的SQL语句有问题,该绑定变量的要绑定变量,尽量避免全表查询,因为数据量如果很多,每一条语句同时执行就很耗数据库资源了,很容易导致这一的现象,所以我先试试他说的,还请大家多多给点意见,链接没有超时,网络也没有断过
      

  3.   

    能得到连接池中的数据库连接,但是创建Statement的时候就出错了,提示Closed Connection
      

  4.   

    我觉得sql语句效率不高的问题很可能存在。
    有时间抓一下sql看看。
      

  5.   

    请教一下大家,创建数据库连接的时候conn = java.sql.DriverManager.getConnection(url, username, password);得到的conn 值,是不是每创建一个链接,他们的地址值都是不一样的?我用conn.toString()的方法打印出来看的
      

  6.   

    估计是conn没有及时关闭,导致其他使用conn时出错
      

  7.   

    你在每次调用链接之后要关闭 我前段时间做个关于物流的东西 我们小组的人  在DAO中  基本每人作关闭链接的操作,结果在还没有作令牌的时候 问题就出来了  频繁的刷新就能把链接给干掉。
      

  8.   

    感谢大家的留言,连接池里面的连接5分钟没有使用的话,我是关闭了的,查看了一下服务器的内存,当数据库连接同时增加的时候,服务器free的内存吃紧,在还剩几十兆的时候,如果把得到连接池里面的链接,但是创建Statement的时候就会报错 ,提示数据库连接已经关闭了,当服务器数据库连接降下来以后,free的内存有几百的时候,这个时候拿出连接池中的数据库连接,再创建Statement的是,就不会报错了 ,是否跟服务器free的内存有关系呢