Druid 崩了,线上直接炸锅!
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.38</version>
</dependency>
-
testWhileIdle=true (推荐):空闲时校验,平衡性能与可靠性。 -
testOnBorrow=false :借用时不校验(避免每次取连接都查库)。 -
testOnReturn=false :归还时不校验(同上)。
public class MyPasswordCallback extends DecryptPasswordCallback {
public MyPasswordCallback() {
super("your-encryption-key"); // 替换为实际密钥
}
}
spring:
datasource:
druid:
stat-filter:
enabled: true
# 慢 SQL 阈值(毫秒,默认 0 不统计)
slow-sql-millis: 2000
# 是否记录合并的 SQL(如批量操作)
merge-sql: true
# 统计日志输出间隔(毫秒,默认 60000)
log-slow-sql: true
spring:
datasource:
druid:
url: jdbc:mysql://...
username: root
password: encryptedPassword
filters: stat,wall
connection-properties: config.decrypt=true;config.decrypt.key=myKey
spring:
datasource:
druid:
web-stat-filter:
enabled: true
# 监控所有请求(默认 /*)
url-pattern: /*
# 排除静态资源(可选)
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
enabled: true
url-pattern: /druid/*
# 允许访问的 IP(生产环境建议限制)
allow: 127.0.0.1
# 登录用户名/密码(生产环境必须设置)
login-username: admin
login-password: 123456
# 禁用重置功能(安全增强)
reset-enable: false
<logger name="com.alibaba.druid.pool.DruidDataSource" level="DEBUG">
<appender-ref ref="LOGSTASH"/>
</logger>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.38</version>
</dependency>
spring:
datasource:
druid:
filters: wall,stat,slf4j
wall:
enabled: true
# 拦截 DELETE/UPDATE 无 WHERE 条件的 SQL
delete-allow: false
update-allow: false
# 禁止执行存储过程(高风险操作)
procedure-allow: false
# 允许的白名单 SQL(如健康检查)
config:
select-allow: true
spring:
datasource:
druid:
stat-filter:
enabled: true
# 单个 IP 最大 SQL 执行次数(每分钟)
max-sql-execution-count-per-ip-per-minute: 1000
# 单个 URI 最大 SQL 执行次数(每分钟)
max-sql-execution-count-per-uri-per-minute: 500
spring:
datasource:
druid:
remove-abandoned: true
remove-abandoned-timeout: 300 # 连接未关闭超时时间(秒,默认 300)
log-abandoned: true # 记录泄漏连接的堆栈信息
@Autowired
private DataSource dataSource;
public void adjustPoolSize() {
if (dataSource instanceof DruidDataSource) {
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
// 动态调整最大连接数
druidDataSource.setMaxActive(200);
// 动态调整最小空闲连接数
druidDataSource.setMinIdle(50);
}
}
spring:
datasource:
druid:
initial-size: 10 # 初始连接数(覆盖默认 0)
test-on-borrow: false # 预创建时不校验(提升启动速度)
spring:
datasource:
druid:
default-transaction-isolation: 2 # TRANSACTION_READ_COMMITTED(2)
-
基础参数调优(容量、生命周期) → 2. 监控体系搭建(SQL 统计、连接状态) → 3. 安全增强(防注入、防泄漏) → 4. 持续迭代(基于监控数据优化) 。
正在找工作,欢迎发 JD 到我邮箱,坐标上海浦东新区。

浙公网安备 33010602011771号