`
captain
  • 浏览: 135055 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

DBCP连接池调优

阅读更多
   最近还是在折腾框架的性能调优,前天给mysql加了查询缓存(http://captain.iteye.com/blog/253260),初步见效,无奈今天当数据量到100万以上,400用户并发操作的时候,每次到10分钟左右,tomcat又报错了,还是那天杀的jdbc begin failed,查了无数解决办法,最后定位在数据库连接池和jvm gc回收的冲突上,apache dbcp官方这样解释的
Intermittent dB Connection Failures

    Tomcat runs within a JVM. The JVM periodically performs garbage collection (GC) to remove java objects which are no longer being used. When the JVM performs GC execution of code within Tomcat freezes. If the maximum time configured for establishment of a dB connection is less than the amount of time garbage collection took you can get a db conneciton failure.

    To collect data on how long garbage collection is taking add the -verbose:gc argument to your CATALINA_OPTS environment variable when starting Tomcat. When verbose gc is enabled your $CATALINA_BASE/logs/catalina.out log file will include data for every garbage collection including how long it took.

    When your JVM is tuned correctly 99% of the time a GC will take less than one second. The remainder will only take a few seconds. Rarely, if ever should a GC take more than 10 seconds.

    Make sure that the db connection timeout is set to 10-15 seconds. For the DBCP you set this using the parameter maxWait.

也就是说,连接池等待时间设置得过短,还没热身呢就被gc干掉了,仔细分析了其官方对各个参数的说明:
 <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
         -->
    <parameter>
      <name>maxActive</name>
      <value>100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool.
         Set to 0 for no limit.
         -->
    <parameter>
      <name>maxIdle</name>
      <value>30</value>
    </parameter>

    <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->
    <parameter>
      <name>maxWait</name>
      <value>10000</value>
    </parameter>


一怒,直接将maxwait=-1,一直等把,反正资源、硬件啥的绝对没问题,重新跑loadrunner脚本,1小时压力测试,通过,据这个帖子说maxwait过大容易引起连接池泄露(http://swingchen.iteye.com/blog/145088),明天接着优化这参数,好歹有眉目了。
分享到:
评论

相关推荐

    DBCP连接池所需jar包.rar

    3. **commons-pool-1.5.6.jar**:Apache Commons Pool是对象池设计模式的实现,DBCP连接池依赖于这个库来管理其内部的数据库连接对象。对象池允许开发者在应用程序中复用已经创建的对象,而不是每次需要时都创建新的...

    DBCP连接池的jar包

    DBCP连接池在Java应用中被广泛使用,尤其是在Web应用服务器中,如Tomcat。 DBCP主要由两个核心组件组成: 1. `commons-dbcp.jar`:这是DBCP的主要库,包含了数据库连接池的实现。它提供了DataSource接口的实现,...

    自己封装的dbcp连接池封装,可以同时连接多个数据库

    在本项目中,您分享的是一个自定义封装的DBCP连接池,它具有同时连接多个数据库的功能。这个特性对于那些需要处理多种数据库的应用来说非常有用,例如数据集成、数据迁移或多数据源分析等场景。以下是对这个封装的...

    dbcp连接池.rar

    "dbcp连接池"指的是Apache的一个开源项目——BasicDataSource,它是Commons DBCP(Database Connection Pool)的一部分。Commons DBCP是Apache组织提供的一个数据库连接池组件,它实现了JDBC的DataSource接口,能够...

    数据库连接池资源包(c3p0 , dbcp,druid连接池)

    DBCP基于Jakarta Pool组件实现,提供基本的连接池功能,如连接池初始化、连接生命周期管理等。DBCP在稳定性上表现良好,但在并发处理能力和性能优化方面稍逊色于其他连接池。 3. **Druid**:阿里巴巴开源的数据库...

    连接池大小调优Java开发Java经验技巧共8页.pdf

    2. **常见连接池实现**:如Apache的DBCP、C3P0,Tomcat的JDBC连接池(Tomcat-jdbc-pool),以及HikariCP等。这些连接池的特点、配置选项和性能对比可能会有所提及。 3. **连接池参数配置**:包括最小连接数、最大...

    数据库连接池dbcp

    数据库连接池(Database Connection Pool,简称 DBCP)是 Apache 组织提供的一款开源的 Java 数据库连接池组件。在 Java 应用程序尤其是企业级应用中,DBCP 被广泛用于管理数据库连接,提高了应用程序的性能和效率。...

    连接池连接池连接池

    常见的Java连接池实现有Apache的DBCP、C3P0,以及更现代的HikariCP、Druid等。这些库提供了丰富的配置选项,例如最小连接数、最大连接数、超时设置、连接验证等,以便开发者根据实际需求进行调优。 在使用连接池时...

    java 数据库 连接池驱动.rar

    - DBCP (Apache BasicDataSource):Apache的一个开源项目,基于Jakarta Pool实现,它是Tomcat默认的数据库连接池。 - HikariCP:高性能的连接池,设计目标是提供最小的延迟和最大吞吐量,被认为是目前最快的Java...

    数据库连接池代码实现

    数据库连接池是现代应用程序开发中的重要组成部分,尤其...在实际开发中,我们还需要考虑连接池的监控和调优,比如监控连接池的使用情况,根据性能指标调整参数,以及处理异常和错误情况,以保证系统的稳定性和高效性。

    commons-dbcp-1.4.jar依赖包

    5. **性能优化**:讨论DBCP的性能调优策略,如设置合适的连接池大小、启用连接验证和空闲检查频率等。 6. **与其他连接池的比较**:简述DBCP与C3P0、HikariCP、Druid等其他流行的Java数据库连接池的差异和选择依据...

    连接池 (jsp)

    在实际应用中,开发者还需要关注连接池的性能调优,例如调整连接的最大空闲时间以防止资源浪费,设置合理的预获取策略以减少等待新连接的时间,以及监控连接池的状态,以便在系统负载增加时及时调整参数。...

    Tongweb5中配置JDBC连接池

    2. **选择连接池实现**:Tongweb5可能集成了多种连接池实现,如C3P0、Apache DBCP或HikariCP等。选择合适的连接池,并配置相应的参数,如最大连接数、最小连接数、超时时间等。例如,如果使用C3P0,可以在`context....

    数据库连接池-jar包

    5. **监控和调优**:通过日志、监控工具或连接池提供的API来监控连接池状态,根据应用需求进行性能调优。 了解并正确使用数据库连接池是提高系统效率和稳定性的关键,同时,选择合适的jar包也会影响系统的整体性能...

    mysql数据连接池

    - **DBCP (Apache Commons DBCP)**:Apache提供的另一个数据库连接池,基于Jakarta-pool实现,适用于小型项目。 - **HikariCP**:高性能的连接池,设计目标是提供零-overhead的性能和严格的JDBC合规性,是许多大型...

    DBCP&C3P0连接池(含配置文件)

    本主题将深入探讨两种流行的数据库连接池实现:DBCP(Jakarta DB Connection Pool)和C3P0,以及如何配置它们。 **DBCP(Jakarta DB Connection Pool)** DBCP是Apache软件基金会的一个项目,提供了一个符合Java ...

    DB_Conn_Pool.rar_创建数据库_数据库 连接池_数据库连接池_连接池

    1. 选择连接池实现:有许多成熟的数据库连接池实现,如Apache的DBCP、C3P0,以及HikariCP等。这些组件提供了丰富的配置选项,可以根据项目需求选择合适的连接池。 2. 配置连接池:配置包括数据库驱动类、URL、用户名...

    数据库连接池相关 jar 包

    数据库连接池在Java开发中扮演着至关重要的角色,它能够有效地管理和优化数据库连接,提高应用程序的性能和资源...在实际开发中,还需要关注连接池的监控和调优,确保其能够满足应用的性能需求,并防止资源耗尽等问题。

    dbcp2-2.1.1和pool2-2.4.2 jar包

    《dbcp2-2.1.1与pool2-2.4.2:Java数据库连接池的基石》 在Java编程领域,数据库连接池(Database Connection Pool)是提高应用程序性能和资源管理的关键技术之一。Apache的Commons DBCP2-2.1.1和Commons Pool2-...

    浅谈java连接池

    常见的Java连接池实现有Apache的DBCP、C3P0、HikariCP以及Tomcat的内置连接池等。选择合适的连接池依赖于应用程序的需求,如并发量、性能要求、稳定性等因素。正确的配置和使用连接池是提升Java应用程序性能、降低...

Global site tag (gtag.js) - Google Analytics