SSM框架整合Druid进行数据监控

╰半橙微兮° 2022-03-09 06:28 198阅读 0赞

Druid的简介

  1. Druid是[阿里巴巴][Link 1]开源平台上一个数据库连接池实现(网上都说这个是目前java最好的连接池)。Druid还能够提供强大的监控和扩展功能。他能做到精度在方法级的监控,方便你找出在哪个方法上,哪个sql语句上花费的时间最多,然后做出针对性优化。

Druid的功能

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置件文中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

所以Druid可以:
1、充当数据库连接池。
2、可以监控数据库访问性能
3、获得SQL执行日志

maven配置Druid,添加Druid依赖:

  1. <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>druid</artifactId>
  5. <version>1.0.28</version>
  6. </dependency>

application-mybatis.xml配置文件中druid的配置

  1. <!-- 数据库连接池 -->
  2. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clone">
  3. <property name="driverClassName" value="${mysql.driver}"/>
  4. <property name="url" value="${mysql.url}"/>
  5. <property name="username" value="${mysql.user}"/>
  6. <property name="password" value="${mysql.password}"/>
  7. <!-- 配置初始化大小、最小、最大 -->
  8. <!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
  9. <!-- 初始化时建立物理连接的个数,缺省值为0 -->
  10. <property name="initialSize" value="5"/>
  11. <!-- 最小连接池数量 -->
  12. <property name="minIdle" value="5"/>
  13. <!-- 最大连接池数量,缺省值为8 -->
  14. <property name="maxActive" value="20"/>
  15. <!-- 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 -->
  16. <property name="maxWait" value="60000"/>
  17. <!-- 添加此处作用是为了在SQL监控页面显示sql执行语句,不配置不显示 -->
  18. <property name="filters" value="stat,wall,log4j" />
  19. </bean>

web.xml的配置:

  1. <!-- 连接池 启用Web监控统计功能 begin -->
  2. <filter>
  3. <filter-name>DruidWebStatFilter</filter-name>
  4. <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
  5. <init-param>
  6. <param-name>exclusions</param-name> <!-- 经常需要排除一些不必要的url -->
  7. <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
  8. </init-param>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>DruidWebStatFilter</filter-name>
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>
  14. <servlet>
  15. <servlet-name>DruidStatView</servlet-name>
  16. <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class><!-- 这个StatViewServlet的用途包括:提供监控信息展示的html页面;提供监控信息的JSON API -->
  17. <!-- 白名单 -->
  18. <!-- <init-param>
  19. 如果是限定指定的子网里的所有ip都可以访问,那就是ip/子网掩码数。例如 192.168.1.120/24 就相当于192.168.1.*
  20. <param-name>allow</param-name>
  21. <param-value>127.0.0.1</param-value>
  22. </init-param> -->
  23. <!-- 如果不配置用户名密码,就是任何人都可以访问了-->
  24. <init-param>
  25. <!-- 用户名 -->
  26. <param-name>loginUsername</param-name>
  27. <param-value>rjx</param-value>
  28. </init-param>
  29. <init-param>
  30. <!-- 密码 -->
  31. <param-name>loginPassword</param-name>
  32. <param-value>rjx</param-value>
  33. </init-param>
  34. </servlet>
  35. <servlet-mapping>
  36. <servlet-name>DruidStatView</servlet-name>
  37. <url-pattern>/druid/*</url-pattern>
  38. </servlet-mapping>
  39. <!-- 连接池 启用Web监控统计功能 end -->

log4j.properties的配置:

  1. # Druid
  2. log4j.logger.druid.sql=info,A1,A2
  3. log4j.logger.druid.sql.DataSource=info,A1,A2
  4. log4j.logger.druid.sql.Connection=info,A1,A2
  5. log4j.logger.druid.sql.Statement=info,A1,A2
  6. log4j.logger.druid.sql.ResultSet=info,A1,A2
  7. log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.A1.File=D://logs/info_slowsql.log
  9. log4j.appender.A1.DatePattern='.'yyyy-MM-dd
  10. log4j.appender.A1.ImmediateFlush=true
  11. log4j.appender.A1.Append=true
  12. log4j.appender.A1.Threshold=info
  13. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c] - %m%n
  15. log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
  16. log4j.appender.A2.File=D://logs/warn_slowsql.log
  17. log4j.appender.A2.DatePattern='.'yyyy-MM-dd
  18. log4j.appender.A2.ImmediateFlush=true
  19. log4j.appender.A2.Append=true
  20. log4j.appender.A2.Threshold=warn
  21. log4j.appender.A2.layout=org.apache.log4j.PatternLayout
  22. log4j.appender.A2.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c] - %m%n

配置完毕以后,启动项目就可以访问了

地址:localhost:端口号/项目名/druid/

成功如下图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzQxNjYwMTgy_size_16_color_FFFFFF_t_70

输入设置的账号密码,登陆跳转,

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzQxNjYwMTgy_size_16_color_FFFFFF_t_70 1

这样就行了,完结,撒花 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

发表评论

表情:
评论列表 (有 0 条评论,198人围观)

还没有评论,来说两句吧...

相关阅读