淘宝druid工具使用

最近公司发现代码效率运行很低, 而且经常锁住数据库,意外发现了 druid 这个东西,说实话第一次碰到竟然是为 他的SQLutils,今天再开才发现他正式我想要的数据库sql执行监控工具, 废话不多说了,开始配置,为了能看到效果直接在我现在的项目上改,

druid 提供的文档真好,正式我们能看懂的中文文档:

https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

 

源码: https://github.com/alibaba/druid

 

在文档中, 说的非常详细, 我按照文档 文档基本半个小时就配置号;

以下是我的配置步骤:

 

1、druid的jar包 写道
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>

现在最新版是 1.0.9

 

2、配置监控服务 写道
用druid 就是为了使用它的监控功能, 如果没有监控, 那我们看起来比较麻烦


https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter


druid 是控制sql 所以在数据源这里做了配置, 他们修改了spring的dbcp连接, 可能实在自己的数据源链接中添加了一些监控sql 的脚本

我是通过 bean 的方式配置的 其他配置方式见原网页
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<property name="slowSqlMillis" value="10000" />
<property name="logSlowSql" value="true" />
<property name="mergeSql" value="true" />
</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
... ...
<property name="filters" value="log4j" />
<property name="proxyFilters">
<list>
<ref bean="stat-filter" />
</list>
</property>
</bean>
 
这里配置注意使用 数据源链接方式  需要修改为 com.alibaba.druid.pool.DruidDataSource, 否则会找不到  proxyFilters 这个属性

 

3、配置监控页面 写道
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

 

4、和服务融合 写道
我使用的spring,这里说下我的配置, 其他的可参考源文档

<bean id="druid-stat-interceptor"
class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>

<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
scope="prototype">
<property name="patterns">
<list>
<value>com.mycompany.service.*</value>
<value>com.mycompany.dao.*</value>
</list>
</property>
</bean>

<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor"
pointcut-ref="druid-stat-pointcut" />
</aop:config>

 

我们启动我们服务, 我启动过程还是比较顺利的,如果原服务正常启动, 添加了druid出错了, 那就是配置错误了, 按照错误提示一步一步找应该能找到问题所在

 

 

看下我启动的效果吧:

 

输入你的用户名在 地址栏输入:应用地址:端口/web服务/druid


淘宝druid工具使用_第1张图片
 

 

看到效果了, 哈哈, 看下数据源连接吧展示一下部分信息:


淘宝druid工具使用_第2张图片
 

 

 

     

我本地只做了一次简单操作,所以数据比较少, 如果放在生产我们就可以看到了, 不会天天被被运维说我的数据链接有问题了

 

看一下我们最关心的sql吧:

 


淘宝druid工具使用_第3张图片
 

噢  终于出来, 竟然和我 在 执行的是一致的O(∩_∩)O哈哈~ 配置正确,我们看到这里有方法执行时间, 和事物, 我这个方式是一个sevice , 所有的方法竟然都在事物中, 实际上只需要个在事物中即可, 费这么大劲,终于抓到元凶了, 没事干 弄那么多select 放事物做什么,还有就是有一个sql执行时间太长了,我么来分析一下:


淘宝druid工具使用_第4张图片
 

     

 

如果方法执行太慢这个 sql 绝对是元凶! 要优化就从他入手吧!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(淘宝druid工具使用)