Program tuning - Druid和Linux配合优化数据库连接池配置
- 配置步骤
- 1. 添加依赖
- 2. 添加配置
- 3. 启动监控界面
 
- 常见问题
- 输入地址之后,浏览器直接打印html代码,而不是登录框
- 刷新页面不能重新加载数据
 
- 调优步骤
- 1. 开始压测
- 2. 监控线程池状态
- 3. 查看服务器状态
- 结论
 
配置步骤
1. 添加依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.20</version>
</dependency>
2. 添加配置
spring:
  datasource:
    druid:
      webStatFilter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      statViewServlet:
        allow:
        enabled: true
        url-pattern: /druid/*
        login-password: root
        login-username: root
      filter:
        stat:
          enabled: true
          # 慢SQL记录
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          config:
            multi-statement-allow: true
      keep-alive: true
3. 启动监控界面
- 启动项目
- 浏览器输入
http://主机ip:项目端口/druid/login.html

- 账号密码是第2步yml配置的login-username和login-password
  
常见问题
输入地址之后,浏览器直接打印html代码,而不是登录框
可能是代码中使用了@WebFilter(urlPatterns = "*")过滤器,并且,其中的urlPatterns参数是*,程序就会拦住/druid/login.html并输出文本
刷新页面不能重新加载数据
需要在地址栏点击回车重新访问,刷新和F5没有效果
调优步骤
1. 开始压测
使用Jmeter开始压测
2. 监控线程池状态
数据库连接配置如下:
spring.datasource.druid.initialSize = 5
spring.datasource.druid.minIdle = 5
spring.datasource.druid.maxActive = 20

3. 查看服务器状态
查到压测目标服务的PID,运用下面的指令获取与数据库连接的闲置线程数:
netstat -anpt|grep 3306|grep TIME_WAIT |wc -l
结论
- 根据截图中的活跃线程数以及服务器的闲置线程数量来得出spring.datasource.druid.maxActive最优配置。
- 建议spring.datasource.druid.initialSize和spring.datasource.druid.minIdle配置相同,防止服务频繁向操作系统请求线程,影响性能。



















