mysql连接池监控_Druid数据库连接池监控的使用

本文介绍了如何在SpringBoot项目中使用Druid数据库连接池,并详细解析了配置参数,包括连接池的基本设置、监控页面的启用以及结合Spring进行方法监控。通过Druid,开发者可以有效地监控数据库连接状态,提升应用性能。
摘要由CSDN通过智能技术生成

Druid数据库连接池

1. Druid是什么?

Druid是Java语言中最好的数据库连接池,由阿里巴巴团队开发。Druid能够提供强大的监控和扩展功能。

github地址为https://github.com/alibaba/druid,有丰富的中文文档和常见问题的解答,非常方便。

2. 如何在springboot项目中使用?

2.1 首先引入依赖

com.alibaba

druid-spring-boot-starter

1.1.10

2.2 进行属性配置,仅供参考

spring:

#数据库连接配置

datasource:

url: jdbc:postgresql://127.0.0.1:5432/postgres

data-username: postgres

data-password: 123456

driver-class-name: org.postgresql.Driver

type: com.alibaba.druid.pool.DruidDataSource

druid:

#JDBC配置

url: jdbc:postgresql://127.0.0.1:5432/postgres

username: postgres

password: 123456

driver-class-name: org.postgresql.Driver

#连接池配置

initial-size: 10

max-active: 50

min-idle: 10

max-wait: 5000

pool-prepared-statements: true #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。

max-pool-prepared-statement-per-connection-size: 20

validation-query: SELECT 1 FROM DUAL

validation-query-timeout: 20000

test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。

test-on-return: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。

test-while-idle: true #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。

time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

min-evictable-idle-time-millis: 300000 #一个连接在池中最小生存的时间,单位是毫秒

# StatViewServlet配置。(因为暴露的监控信息比较敏感,支持密码加密和访问ip限定)

stat-view-servlet:

enabled: true

url-pattern: /druid/*

login-username: admin

login-password: admin

filter:

stat:

log-slow-sql: true

slow-sql-millis: 1000

merge-sql: true

wall:

config:

multi-statement-allow: true

各配置项的含义可以参考github的介绍,非常详细。值得注意的是stat-view-servlet属性配置的就是druid内置的监控页面,我们访问http://ip:port/druid,输入上面配置的用户名密码,即可看到下面的监控页面:

79ac1c023ab8ba722cc0b2c82a3acb8c.png可以查看sql执行时间,修改行数等等。如果只想关注慢sql,可以修改上面配置文件中的 slow-sql-millis,druid默认的是3000ms。

3. 结合spring的监控

上面我们可以看到对sql执行的耗时等,但如果我们也想对方法进行监控可以么?答案肯定是可以的,在上面的监控页面我们可以看到有个叫spring监控,但因为没有配置,暂时为空。要开启监控配置也是非常简单的,如下:

@Configuration

@EnableAspectJAutoProxy(proxyTargetClass = true)

public class DruidAspectConfig {

@Bean

public DruidStatInterceptor druidStatInterceptor() {

DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();

return dsInterceptor;

}

@Bean

@Scope("prototype")

public JdkRegexpMethodPointcut druidStatPointcut() {

JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();

pointcut.setPatterns("com.qa.cloud.mapper.*","com.qa.cloud.service.*");

return pointcut;

}

@Bean

public DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {

DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();

defaultPointAdvisor.setPointcut(druidStatPointcut);

defaultPointAdvisor.setAdvice(druidStatInterceptor);

return defaultPointAdvisor;

}

}

我们通过指定Patterns来确定要监控的方法,也可以通过接口类型,bean名称等进行配置。开启后效果如下:

f9230172d2fe34e0243da24423fbec5b.png

据官方介绍,开启监控对性能的影响是微乎其微的。

这些监控数据我们也可以调用api通过自定义的形式来输出,也可以输出到日志中(这点很有必要),具体做法都可以参考github上的介绍。

参考博客:

http://www.cnblogs.com/han-1034683568/p/6730869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值