阿里Druid连接池配置使用

本文介绍如何在项目中使用阿里公司的Druid数据库连接池技术,并提供了详细的配置示例。此外,还介绍了如何通过Druid监控SQL执行性能。

标签: 数据库连接池Druid性能技术
  129人阅读  评论(0)  收藏  举报
  分类:
[html]  view plain  copy
  1. 项目中有用到数据库连接池技术,这次我们使用阿里公司的Druid连接池。Druid对数据库的监控做的很好,可以详细统计SQL执行的性能。  
[html]  view plain  copy
  1. 具体使用:如果是maven项目,加入如下依赖码到pom.xml文件中即可。  
[html]  view plain  copy
  1. <span style="font-size:18px;"><span style="white-space:pre">    </span></span><pre name="code" class="html"><span style="white-space:pre">  </span><dependency>    
  2.             <groupId>com.alibaba</groupId>    
  3.             <artifactId>druid</artifactId>    
  4.             <version>版本自选</version>    
  5. <span style="white-space:pre">    </span></dependency>    
[html]  view plain  copy
  1. </pre>如果没有用到maven,则需要导包。在开源中国的项目中去下载和查看相关文档。http://www.oschina.net/p/druid<pre>  
[html]  view plain  copy
  1. 具体配置如下,这个配置基本能满足项目需要。  
[html]  view plain  copy
  1. </pre><pre name="code" class="html"><span style="font-size:18px;"><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  
  2.         init-method="init" destroy-method="close">  
  3.         <property name="url" value="jdbc:oracle:thin:@ip:1521:服务名" />   
  4.         <property name="username" value="用户名" />  
  5.         <property name="password" value="密码" />             
  6.         <!-- 配置初始化大小、最小、最大 -->  
  7.         <property name="initialSize" value="10" />  
  8.         <property name="minIdle" value="30" />  
  9.         <property name="maxActive" value="300" />  
  10.         <!-- 配置获取连接等待超时的时间 -->  
  11.         <property name="maxWait" value="3600000" />  
  12.         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  13.         <property name="timeBetweenEvictionRunsMillis" value="60000" />  
  14.         <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  15.         <property name="minEvictableIdleTimeMillis" value="30000" />  
  16.         <property name="validationQuery" value="SELECT 'x' FROM dual" />  
  17.         <property name="testWhileIdle" value="true" />  
  18.         <property name="testOnBorrow" value="false" />  
  19.         <property name="testOnReturn" value="false" />  
  20.         <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  
  21.         <property name="poolPreparedStatements" value="true" />  
  22.         <property name="maxPoolPreparedStatementPerConnectionSize"  
  23.             value="20" />  
  24.         <!-- 配置监控统计拦截的filters -->  
  25.         <property name="filters" value="stat"></property>  
  26.         <!-- <property name="filters" value="log4j" />  
  27.         <property name="proxyFilters">  
  28.             <list>  
  29.                 <ref bean="stat-filter" />  
  30.                 <ref bean="wall-filter" />  
  31.             </list>  
  32.         </property> -->  
  33.     </bean>  
  34.     <!-- 如果需要将统计信息写入log,就进行下面的配置,并在web.xml中作相应配置-->  
  35.     <!-- 配置阿里云的sql注入检测 -->  
  36.     <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">  
  37.         对被认为是攻击的SQL进行LOG.error输出  
  38.         <property name="logViolation"  value="true"/>  
  39.         对被认为是攻击的SQL抛出SQLExcepton  
  40.         <property name="throwException" value="false" />  
  41.     </bean>  
  42.   
  43.     <!--配置阿里云连接池状态监控-->  
  44.     <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">  
  45.         监控sql执行大于1s的sql  
  46.         <property name="slowSqlMillis" value="1000" />  
  47.         <property name="logSlowSql" value="true" />  
  48.         <property name="mergeSql" value="true" />  
  49.     </bean></span>  
[html]  view plain  copy
  1. <span style="font-size:18px;">以下是web.xml中<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;">内置监控界面的配置:</span></span>  
[html]  view plain  copy
  1. <span style="font-size:18px;"><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;"></span></span><pre name="code" class="html"><servlet>  
  2.     <servlet-name>DruidStatView</servlet-name>  
  3.     <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
  4.   </servlet>  
  5.   <servlet-mapping>  
  6.     <servlet-name>DruidStatView</servlet-name>  
  7.     <url-pattern>/druid/*</url-pattern>  
  8.   </servlet-mapping>  
[html]  view plain  copy
  1. <span style="font-size:18px;"><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.2px;">  
  2. </span></span>  
大致配置就是这样,在项目启动后,输入:http://[ip]:[端口]/[项目名(看具体路径)]/druid/index.html
就可以打开Druid的监控界面。
<think>我们正在处理用户关于阿里Druid连接池配置参数及使用指南的查询。根据提供的引用内容,我们可以整合相关信息。引用[2]中提到了在SpringBoot中配置Druid连接池的示例,包括基本的url、用户名、密码和驱动类名,并提到还有其他Druid特定配置(如监控配置)。引用[1]和[3]则提供了其他方面的信息,比如性能优化、监控以及与其他连接池的对比,但用户当前主要关注配置参数和使用指南。由于用户明确要求配置参数及使用指南,我们将重点放在配置参数上。但请注意,引用中并没有给出所有参数的详细列表,因此我们需要结合已知信息并补充常见参数。根据引用[2]的示例,我们可以扩展一些常见的Druid配置参数,例如:-连接池大小:初始大小、最小空闲、最大活动连接数等-监控配置:如启用监控页面、配置过滤器等-其他:如连接测试、超时设置等由于引用中并没有给出完整的参数列表,我们将基于Druid官方文档的常见配置参数进行整理(注意:我们只能基于已知引用,但用户要求的是配置参数,因此我们应尽可能提供)。但是,请注意:引用[2]中给出了SpringBoot配置的示例,因此我们以SpringBoot配置方式为主。步骤:1.介绍基本配置(如url、username等)2.介绍连接池大小相关参数3.介绍监控配置(这是Druid的特色)4.其他常用参数(如连接测试、超时等)同时,根据引用[3],我们注意到Druid支持动态调整参数,例如`setMaxActive`可以立即生效,这也是一种配置方式(但用户主要问的是初始配置)。由于用户没有指定使用环境(如SpringBoot还是其他),但引用[2]中给出了SpringBoot的配置,因此我们以SpringBoot配置为例。另外,引用[1]提到“后续章节将深入探讨Druid连接池的性能特点及其优化策略”,因此我们可以建议用户参考官方文档或相关指南以获取完整参数列表。我们将组织回答如下:-开头介绍Druid连接池配置的重要性-基本配置参数(必须项)-连接池大小管理参数-监控配置(如何启用监控页面)-其他常用参数(如连接测试、超时等)-动态调整参数(简要提及)-总结并建议参考官方文档注意:由于引用内容有限,我们无法列出所有参数,但会列出常见参数。同时,根据指令,我们需要在回答中自然地添加引用标识。由于引用[2]提供了配置示例,我们将在提到SpringBoot配置时引用[2]。引用[3]提到了动态调整,我们在动态调整部分引用[3]。引用[1]提到了优化和监控,我们在监控部分可以引用[1]。最后,生成相关问题。开始回答:</think>### 阿里 Druid 数据库连接池配置参数及使用指南 Druid阿里巴巴开源的高性能数据库连接池,以下为核心配置参数及使用指南,基于 Spring Boot 环境整理: #### 一、基础连接配置(必须项) ```yaml spring: datasource: druid: url: jdbc:mysql://localhost:3306/mydb username: root password: root driver-class-name: com.mysql.jdbc.Driver # 数据库驱动 ``` #### 二、连接池性能参数 1. **容量控制** ```yaml initial-size: 5 # 初始连接数 min-idle: 5 # 最小空闲连接 max-active: 20 # 最大活动连接数[^3] ``` 2. **超时管理** ```yaml max-wait: 60000 # 获取连接最大等待时间(ms) remove-abandoned-timeout: 300 # 自动关闭超时连接(秒) ``` #### 三、健康检查配置 ```yaml validation-query: SELECT 1 # 连接有效性检测SQL[^3] test-while-idle: true # 空闲时定期检测 test-on-borrow: false # 借用连接时不强制检测 time-between-eviction-runs-millis: 60000 # 检测间隔(ms) ``` #### 四、监控中心配置 1. **启用监控页面** ```yaml stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: admin ``` 2. **SQL 监控** ```yaml filters: stat,wall # 启用统计和防火墙 filter: stat: log-slow-sql: true slow-sql-millis: 2000 # 慢SQL阈值(ms)[^1] ``` #### 五、高级特性 1. **动态参数调整**(运行时生效) ```java DruidDataSource ds = (DruidDataSource) dataSource; ds.setMaxActive(50); // 立即生效[^3] ``` 2. **连接泄漏检测** ```yaml remove-abandoned: true # 自动回收泄漏连接 ``` #### 六、完整配置示例 ```yaml spring: datasource: druid: url: jdbc:mysql://localhost:3306/prod_db username: dbadmin password: securepass driver-class-name: com.mysql.cj.jdbc.Driver initial-size: 3 min-idle: 3 max-active: 50 max-wait: 3000 validation-query: SELECT 1 test-while-idle: true filters: stat,wall stat-view-servlet: enabled: true allow: 127.0.0.1 ``` > **重要提示**: > 1. 生产环境务必配置 `stat-view-servlet` 的访问白名单 > 2. 定期检查监控面板的 `SQL 执行时间` 和 `连接持有时间`[^1] > 3. 动态参数调整优于重启应用[^3] [^1]: Druid 1.2.8数据库连接池:优化、监控与实战。连接池的选择和配置对于数据库操作性能有着重大影响。后续章节将深入探讨Druid连接池的性能特点及其优化策略。 [^2]: 阿里巴巴Druid数据库连接池安装与配置完全指南。配置文件修改:在Spring Boot的应用配置文件(如application.properties或application.yml),添加Druid连接池配置。 [^3]: Java数据库连接池深度对比:HikariCP vs Druid vs Tomcat JDBC。动态调整连接池参数示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值