Tham số cốt lõi cho bộ quản lý kết nối
Druid cung cấp các thiết lập chi tiết để tối ưu hiệu năng và độ ổn định:
- connectionUri: Chuỗi kết nối đặc thù cho hệ quản trị CSDL (ví dụ:
jdbc:mysql://127.0.0.1:3306/app_db?useSSL=false) - credential: Thông tin xác thực bao gồm
uservàsecret(mật khẩu được mã hóa bằng Jasypt) - poolCapacity:
minCapacity: Số kết nối tối thiểu duy trì sẵn sàngmaxCapacity: Ngưỡng kết nối tối đa cho phépinitialCapacity: Số lượng kết nối khởi tạo khi ứng dụng khởi động
- validationQuery: Câu truy vấn kiểm tra sức khỏe kết nối (ví dụ:
SELECT 1cho MySQL) - idleCheckInterval: Tần suất quét kết nối không hoạt động (ms), kết hợp với
minEvictableIdleTimeđể loại bỏ kết nối lỗi - statementCacheSize: Kích thước bộ nhớ đệm prepared statements (đặt 0 để tắt, nên kích hoạt cho Oracle)
- connectionTimeout: Thời gian chờ tối đa khi yêu cầu kết nối (ms), kích hoạt khóa không công bằng qua
useUnfairLock=trueđể cải thiện hiệu năng
Cấu hình tích hợp Spring Boot
Sử dụng starter chuyên dụng với cấu trúc tối giản:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
Cấu hình trong application.yml với thiết lập tối ưu:
spring:
datasource:
druid:
connection-uri: jdbc:postgresql://localhost:5432/app_data
user: app_user
secret: ENC(abc123xyz) # Mật khẩu mã hóa
min-capacity: 3
max-capacity: 15
idle-check-interval: 30000
validation-query: SELECT 1
use-unfair-lock: true
filters: stat,wall,slf4j
Cấu hình cho Spring Framework cổ điển
Triển khai bean datasource với binding thuộc tính:
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties("app.datasource")
public DataSource appDataSource() {
return new DruidDataSource();
}
}
Tệp cấu hình application.properties:
app.datasource.driver-class-name=org.postgresql.Driver
app.datasource.max-wait=5000
app.datasource.min-evictable-idle-time=180000
app.datasource.pool-prepared-statements=true
app.datasource.max-pool-prepared-statement-per-connection-size=25
app.datasource.connection-properties=druid.stat.slowSqlMillis:1000
Thiết lập giám sát thời gian thực
Thêm các thành phần sau để kích hoạt dashboard:
@Bean
public ServletRegistrationBean<StatViewServlet> monitoringServlet() {
ServletRegistrationBean<StatViewServlet> bean =
new ServletRegistrationBean<>(new StatViewServlet(), "/monitoring/*");
Map<String, String> params = new HashMap<>();
params.put("loginUsername", "admin_ops");
params.put("loginPassword", "secure!2024");
params.put("allow", "192.168.1.0/24"); // Chỉ cho phép mạng nội bộ
bean.setInitParameters(params);
return bean;
}
@Bean
public FilterRegistrationBean<WebStatFilter> monitoringFilter() {
FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
bean.addUrlPatterns("/*");
bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,/monitoring/*");
return bean;
}
Truy cập giao diện quản trị qua đường dẫn http://[host]:[port]/monitoring với thông tin đăng nhập đã cấu hình.