`
Dreamer_1029
  • 浏览: 7676 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

连接池大小调优

 
阅读更多

我之前写过连接池的好处和为什么监控至关重要两篇文章。这篇文章将讨论如何使用Flexy Pool为你的连接池找到合适的大小。

了解你的连接池

第一步是了解你的连接池设置,我目前开发的程序使用XA事务, 因此我使用Bitronix 事务管理器, 它自带连接池解决方案。

根据Bitronix 连接池文档 我们需要使用以下配置项:

  • minPoolSize: 连接池中保留的最小连接数。
  • maxPoolSize: 连接池中保留的最大连接数。
  • maxIdleTime: 最大空闲时间。
  • acquisitionTimeout: 请求超时时间。30秒的默认值远远超出了我们的QoS

配置 Flexy Pool

Flexy Pool 自带一个默认的度量指标设置,它建立在Coda Hale Metrics之上并提供两种报告机制:

一个企业级的系统必须使用中央监控工具,比如GangliaGraphite。而通过Flexy Pool 使用多种报告机制是相当容易的。我们的示例将导出报告到CSV文件,你可以自定义默认的度量指标设置

初始化设置

我们把maxOverflow和retryAttempts的值设置得足够大,让Flexy Pool找到合适的连接池大小:

名称 描述
minPoolSize 0 连接池启动时最小连接数为0
maxPoolSize 1 连接池启动时最大连接数为1
acquisitionTimeout 1 一个连接请求的超时时间为1秒
maxOverflow 9 最大连接数能增长到10 (初始的 maxPoolSize + maxOverflow)
retryAttempts 30 如果连接池中保留的最大连接数为10并且没有可用的连接, 一个连接请求将会重试30次.

度量指标耗时

我们的程序是一个批量处理器,通过大数据可以得到以下性能指标:

1. concurrentConnectionCount

2. concurrentConnectionRequestCount

3. maxPoolSizeHistogram

4. connectionAcquireMillis

5. retryAttemptsHistogram

6. overallConnectionAcquireMillis

7. connectionLeaseMillis

在分析了各项指标之后,我们可以得到以下结论:

  • 最大连接数应该是8。
  • 对于这个最大连接数重试次数为0。
  • 在连接池保留的最大连接数达到最大值以后,获取连接的时间趋于稳定。
  • 当租约时间达到顶峰50秒的时候,连接数从7增长到8,因此降低租约时间可以帮助我们减少连接数。

如果数据库最大连接数是100,那我们可以并发运行12个程序。

接近目标

假设我们需要运行19个程序而不是12个,这意味着连接数最多是5。降低连接数将会增加连接请求争用和潜在的重试次数。
这次我们把maxOverflow改为4,其它设置不变:

名称 描述
maxOverflow 4 最大连接数能增长到10 (初始的 maxPoolSize + maxOverflow)

度量指标重载

以下是新的度量指标:

1. concurrentConnectionCount

2. concurrentConnectionRequestCount

3. maxPoolSizeHistogram

4. connectionAcquireMillis

5. retryAttemptsHistogram

6. overallConnectionAcquireMillis

7. connectionLeaseMillis

分析这些指标,我们可以得出结论:

  • 连接池保留的最大连接数为5时,重试连接次数不会超过3
  • 从整体连接获取时间的变化可以反映出重试次数变多了。
  • 连接的租约时间峰值没多大变化,即便这次它大约是35秒。

结论

即便有意外情况发生,Flexy Pool 提供的故障转移机制也有助于连接池调整优化。
当重试次数达到阀值时就会触发警报,让我们能够尽快介入。

分享到:
评论

相关推荐

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

    这份名为“连接池大小调优Java开发Java经验技巧共8页.pdf”的资料可能详细阐述了以下几点关键知识点: 1. **连接池原理**:连接池的基本概念,包括如何创建、管理和复用数据库连接,减少每次建立和关闭连接的开销。...

    java 数据库 连接池驱动.rar

    - 根据应用的并发量和数据库服务器的承受能力合理设置连接池大小。 - 定期检查并更新连接池配置,以适应系统负载的变化。 - 使用合适的健康检查机制,确保连接有效性。 - 开启连接池的日志,以便分析和调优。 6...

    数据库连接池代码实现

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

    MySql数据库连接池C#代码(有注释含测试代码)

    - 设置合适的连接池大小:太小可能导致连接不足,太大则可能浪费系统资源。 - 超时策略:设置超时机制,避免因长时间未使用的连接占用资源。 - 监控和日志:监控连接池的使用情况,记录异常,便于调试和优化。 总的...

    配置数据库连接池

    - 调整连接池大小:根据应用程序的并发用户数和数据库处理能力,合理设置最大和最小连接数,避免资源浪费和过度竞争。 - 连接超时:设置适当的连接超时,防止因长时间未使用的连接占用资源。 - 错误处理:确保应用...

    DB2缓冲池和索引调优的方法

    * 缓冲池的_pagesize:缓冲池的_pagesize决定了缓冲池的大小,缓冲池的_pagesize太小,会导致缓冲池的大小太小,缓冲池的_pagesize太大,会导致缓冲池的大小太大。 此外,索引调优也非常重要,索引可以提高查询性能...

    DB2缓冲池和索引调优的方法.doc

    DB2 缓冲池和索引调优的方法 DB2 缓冲池和索引调优是 DB2数据库性能优化的关键。缓冲池是 DB2 中的一块区域,用于存放频繁访问的数据,以提高数据库的性能。索引是 DB2 中的一种数据结构,用于快速定位数据。缓冲池...

    mysql数据连接池

    同时,为了保证系统的稳定性和可用性,定期对连接池进行监控和调优也至关重要。 总的来说,MySQL数据连接池是提高系统性能、优化数据库访问的关键技术之一,它通过有效的管理数据库连接,实现了资源的高效利用,...

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

    1. 调整连接池参数:根据应用的并发量和数据库性能调整连接池大小,以避免资源浪费或连接不足的情况。 2. 使用连接池健康检查:定期检查连接的有效性,确保连接池中的连接可以正常工作。 3. 释放资源:在应用结束时...

    浅谈java连接池

    - 可以通过配置参数调整连接池大小,适应不同负载需求。 2. **服务器自带的连接池** - 大型Web应用服务器如WebLogic和WebSphere提供了内置的连接池功能,但通常需要特定的API或配置进行管理。 **连接池的关键...

    数据库连接池选型

    5. 配置灵活:支持多种数据库类型,允许调整连接池大小、超时设置等参数。 三、阿里Druid连接池 阿里Druid是一个全面的数据库连接池组件,它不仅提供了基础的连接池功能,还有许多独特的特性,如: 1. SQL解析:...

    数据底层连接池

    数据底层连接池是数据库操作中的一个重要概念,它在IT领域中扮演着优化数据库访问效率的角色。连接池,也称为数据库连接...在实际项目中,开发者应根据应用的特性和需求选择合适的连接池实现,并进行合理的配置和调优。

    DELPHI DataSnapXE连接池类

    1. **初始化连接池**:设置连接池的大小,即最大同时连接数,以及其他的连接参数,如超时时间。 2. **获取连接**:当需要执行数据库操作时,从连接池中借用一个连接,而不是创建新的连接。 3. **释放连接**:完成...

    数据库连接池~~~数据库连接池

    - 管理与调整:连接池负责监控所有连接的状态,确保其有效性,并在需要时自动扩展或收缩连接池大小。 2. **主要功能**: - **连接复用**:减少连接创建和释放的时间消耗。 - **连接管理**:监控连接状态,确保...

    tomcat连接池配置

    1. 调整连接池大小:根据服务器性能和应用需求,适当调整`minimumIdle`和`maximumPoolSize`,避免过多连接占用资源或连接不足导致请求阻塞。 2. 设置合理的超时时间:`connectionTimeout`避免因长时间等待连接而...

    C# 数据库连接池 database pool

    `设置了连接池的最大大小为100。`using`语句确保在操作完成后,即使出现异常,也会正确关闭和返回连接。 使用数据库连接池有以下几个关键点需要注意: 1. **连接字符串**: 连接字符串是连接池识别连接的关键,如果...

    JAVA数据库连接池完整源码(简单易用带详细注释)

    10. **最佳实践**:选择合适的连接池大小是关键,过大可能导致资源浪费,过小则可能引起连接不够用的问题。实际使用中应根据系统负载和数据库性能调整连接池配置。 总之,这份源码提供了一个学习数据库连接池实现的...

    数据库连接池

    这些连接池库提供了一套完善的API和配置选项,使得开发者能够根据实际需求调整连接池的大小、超时时间、空闲检查频率等参数。 1. DBCP(BasicDataSource):Apache的基础数据源,它是Jakarta Commons Pool和Jakarta...

    java apache 数据库连接池 天涯浪子

    6. **连接池管理**:DBCP提供了监控和调整连接池大小的功能,比如当连接池耗尽时,可以根据预设策略自动扩展;当空闲连接过多时,可以自动回收。 7. **优点**:使用数据库连接池可以提高性能,因为创建和销毁连接是...

Global site tag (gtag.js) - Google Analytics