spring.datasource.druid.max-pool-prepared-statement-per-connection-size
时间: 2024-01-01 07:03:25 浏览: 46
`spring.datasource.druid.max-pool-prepared-statement-per-connection-size` 是用于配置 Druid 数据源中每个连接的最大预编译语句池大小的属性。预编译语句是在应用程序启动时编译的 SQL 语句,可以提高应用程序的性能。当使用连接池时,预编译语句通常会在池中被共享,以便在多个连接之间重复使用。这个属性可以用来限制每个连接中预编译语句池的大小,以避免在连接中的预编译语句过多而导致连接池的性能下降。默认值为 20。
相关问题
tomcat项目运行一段时间报错[extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed
根据提供的引用内容,错误信息表明数据源已关闭。这可能是由于以下原因之一导致的:
1. 数据库连接池中的连接已经关闭,但是应用程序仍然在尝试使用它们。
2. 数据库连接池配置不正确,导致连接池无法正常工作。
为了解决这个问题,可以尝试以下步骤:
1. 检查应用程序中是否有未关闭的数据库连接。可以使用JDBC API手动关闭连接,或者使用Spring框架等ORM工具自动管理连接。
2. 检查数据库连接池的配置是否正确。可以尝试使用默认配置,或者根据官方文档调整配置参数。
以下是一些可能有用的代码片段和参考链接:
1. 手动关闭JDBC连接的示例代码:
```java
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// 执行SQL语句等操作
} catch (SQLException e) {
// 处理异常
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// 处理异常
}
}
}
```
2. Spring Boot中使用Druid连接池的示例配置:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/house?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
```
如何配置com.alibaba.druid.pool.DruidDataSource的线程池页面监控
配置com.alibaba.druid.pool.DruidDataSource的线程池页面监控,可以按照以下步骤进行操作:
1. 在pom.xml文件中添加Druid的依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
```
2. 在application.properties或application.yml文件中添加Druid的配置信息,例如:
```properties
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Druid配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
```
3. 在Spring Boot的启动类上添加`@ServletComponentScan`注解,例如:
```java
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
4. 创建一个继承自`StatViewServlet`的Servlet类,用于配置Druid的监控页面,例如:
```java
@WebServlet(urlPatterns = "/druid/*", initParams = {
@WebInitParam(name = "loginUsername", value = "admin"), // 登录用户名
@WebInitParam(name = "loginPassword", value = "admin"), // 登录密码
@WebInitParam(name = "resetEnable", value = "false") // 禁用HTML页面上的“Reset All”功能
})
public class DruidStatViewServlet extends StatViewServlet {
private static final long serialVersionUID = 1L;
}
```
5. 创建一个继承自`WebStatFilter`的Filter类,用于配置Druid的WebStat过滤器,例如:
```java
@WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = {
@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*") // 忽略资源
})
public class DruidWebStatFilter extends WebStatFilter {
}
```
6. 启动Spring Boot应用程序,访问`http://localhost:8080/druid`即可进入Druid的监控页面。