我的应用层连接池最大连接数maxactive=100 oracle参数  processes=200  sessions=300由于是开发调试,会常常重启应用服务,一段时间后  就因为连接数满而无法连接了,
v$process 的记录数达到190多,接近200,
从而只能使用kill session的方式清除初步分析,在当前的应用服务器运行期间,连接数量变化不会超过100,
          但是应用重启(甚至关机)之后,有时候没有释放数据库连接,
          从而造成连接数量累计请教:如何避免这种情况?
      另外,我昨天将一些session  kill掉了   状态成了  killed
      但是今天了  v$session里还有这些killed状态的session,
      这么长时间 相应的process  为什么没有被PMON进程回收呢?

解决方案 »

  1.   

    貌似你说的不大对哦,你重启后进程肯定会清空了,你之所以进程上去是你程序出问题了,检查下数据库连接关闭了吗。如果是JDBC连接库,看看是否关闭,如果是框架,看看事务是否管理了。调试阶段,重新启动服务器数据库进程会降到10个左右的。而且你也可以设置进程注销时间的,没有必要手工KILLED。
      

  2.   

    用的是spring  datasource  连接池    
    关闭应用服务  有时候会关闭数据库连接    但有时候任然占用着数据库资源
      

  3.   

    应该是应用程序的问题,检查下连接数据库的地方。我之前也遇到过,应用程序关了,但是连接没有释放所有还占用一个session