• 首页
  • 解决方案
  • 域名问题
  • 操作系统
  • 租用托管
  • 企业邮局
  • 云服务
  • 备案专题
  • 技术安全
  • 资料下载
  • 站内搜索:
    您的位置:首页 >> 技术安全 >> 攻击防护
    内容页前
    DBCP object created 日期 by the following code was never closed:
    发稿作者:管理员   ‖  发布时间:2017/4/6 17:55:34  ‖  查看2519次  ‖  
    DBCP object created 日期 by the following code was never closed:

     

    1、分析

    看到标题 DBCP 首先想到的肯定是 数据库连接池哪方面有问题,那么先别着急去解决,不要一股脑就钻进逻辑代码中,然后启用调试就开始一步一步

    的分析。我们首先要做的就是想,想想数据库连接池,在项目中是如何实现的,那么不管你或早或晚,都会想到数据库连接池相关的配置文件和代码。那么

    问题来了,是否是配置文件配置的有问题(挖掘技术哪家强?)?

    那么先来分析下各项连接池配置的属性:

    #回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。 dataBase.removeAbandoned =false

    # 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。 dataBase.removeAbandonedTimeout = 30

    # 将被遗弃的数据库连接的回收记入日志。 dataBase.logAbandoned = false

    #连接池的最大数据库连接数,设为0 表示无限制。 dataBase.maxActive = 200

    #数据库连接的最大空闲连接数。超过此空闲连接数,,数据库连接将被标记为不可用,然后被释放。设为0 表示无限制。 dataBase.maxIdle=40

    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1 表示无限制 dataBase.maxWait=10000

    #取得、返回对象和空闲时是否进行验证,检查对象是否有效,默认都为false即不验证

    dataBase.testOnBorrow=true

    dataBase.testWhileIdle=true

    dataBase.testOnReturn=true

    dataBase.validationQuery=select 1 from dual

    说明:

    1. #回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。 dataBase.removeAbandoned =false

    如果这个值为true一般是用来调试的时候用的,正式发布后应该改为false,2. # 将被遗弃的数据库连接的回收记入日志。

    dataBase.logAbandoned = false

    这个如果设置为true就会引起如下错误:

    DBCP object created 日期 by the following code was never closed:

    java.lang.Exception

    3.#连接池的最大数据库连接数,设为0 表示无限制。

    dataBase.maxActive = 200

    #数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0 表示无限制。 dataBase.maxIdle=40

    会有可能出现:Cannot get a connection, pool error Timeout waiting for idle object这样的错误

    (转载网上资料)

    2、深入

    不小心暴露的解决方法,那么 到底是为什么呢?

    原因是:dataBase.removeAbandoned = true

    设置为true以后,使用这个配置将会使用AbandonedObjectPool,同时上方也提到过,此配置只建议在开发阶段使用

    因为,AbandonedObjectPool能帮你发现占用连接过长的代码,比如LOG信息,说明getCustomerOnline占用连接的时间

    超过了removeAbandonedTimeout设定的时间,所以设置dataBase.removeAbandoned = false就行了,

    AbandonedObjectPool只在开发使用,在后续的版本会去掉,并且现在的API都弃用(不赞成)了,因此在使用此

    功能的时候多多注意。

                  
    上一篇: DBCP object created 日期 by the following code was never closed:
    下一篇: 怎么维护网络服务器安全才合理
      联系我们    关于我们    返回顶部↑

    天下数据拥有网站所有权