赞
踩
注意:单为是秒(S)
- SHOW GLOBAL VARIABLES LIKE '%timeout%'
- SET GLOBAL wait_timeout=10000
-
- SET GLOBAL interactive_timeout=3;
也可以配置/etc/my.cnf ,在[mysqld] 下面配置
- 【mysqld】
- wait_timeout=100
- interactive_timeout=100
问题:
如果在配置文件my.cnf中只设置参数wait_timeout=100,则重启服务器后进入,执行:
Mysql> show variables like “%timeout%”;
会发现参数设置并未生效,仍然为28800(即默认的8个小时)。
查询资料后,要同时设置interactive_timeout和wait_timeout才会生效。
【mysqld】
wait_timeout=100
interactive_timeout=100
重启MySQL Server进入后,查看设置已经生效。
注意: 此处单为是毫秒 ms
如果使用durid连接池可以在xml中做如下配置,使用其他连接池,自行查找,都差不多
- <!-- 数据源配置, 使用 durid 数据库连接池 -->
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
- <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
- <property name="driverClassName" value="${jdbc.driver}" />
-
- <!-- 基本属性 url、user、password -->
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
-
- <!-- 配置初始化大小、最小、最大 -->
- <property name="initialSize" value="${jdbc.pool.init}" />
- <property name="minIdle" value="${jdbc.pool.minIdle}" />
- <property name="maxActive" value="${jdbc.pool.maxActive}" />
-
- <!-- 配置获取连接等待超时的时间 -->
- <property name="maxWait" value="60000" />
-
- <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
- <property name="timeBetweenEvictionRunsMillis" value="60000" />
-
- <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
- <property name="minEvictableIdleTimeMillis" value="300000" />
- <!-- 验证 sql -->
- <property name="validationQuery" value="${jdbc.testSql}" />
- <!-- 空闲时检测,此处已定要设为true,不然 timeBetweenEvictionRunsMillis不起作用-->
- <property name="testWhileIdle" value="true" />
- <!-- 拿到连接时检测有效性,如果无效,则生成新的连接使用 -->
- <property name="testOnBorrow" value="false" />
- <!-- 返回给线程池时检测连接有效性 -->
- <property name="testOnReturn" value="false" />
-
- <!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
- <property name="poolPreparedStatements" value="true" />
- <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->
-
- <!-- 配置监控统计拦截的filters -->
- <property name="filters" value="stat" />
- </bean>

注意 本文针对springboot 1.3.5版本,不同版本配置会有差别
注意: 此处单为是毫秒 ms
spring boot 如果不设置spring.datasource.type,默认是使用tomcat-jdbc连接池
在application.properties
- #验证连接的有效性 此处已定要设为true,不然 time-between-eviction-runs-millis 不起作用
-
- spring.datasource.test-while-idle=true
-
- #获取连接时候验证,如果无效,则生成新的连接使用,会影响性能 (此处设为true最为保险,但是为影响性能)
- spring.datasource.test-on-borrow=true
-
-
- spring.datasource.validation-query=SELECT 1 FROM DUAL
-
- #空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟
- spring.datasource.time-between-eviction-runs-millis=300000
-
- #连接池空闲连接的有效时间 ,设置30分钟
- spring.datasource.min-evictable-idle-time-millis=1800000
具体参数配置参看https://blog.csdn.net/u013378306/article/details/78085366
注意: 此处单为是毫秒 ms
pom.xml
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.0.23</version>
- </dependency>
application.properties
- #druid datasouce database settings begin
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot?characterEncoding=utf-8
- spring.datasource.username=root
- spring.datasource.password=123456
-
- # 下面为连接池的补充设置,应用到上面所有数据源中
- # 初始化大小,最小,最大
- spring.datasource.initialSize=5
- spring.datasource.minIdle=5
- spring.datasource.maxActive=20
- # 配置获取连接等待超时的时间
- spring.datasource.maxWait=60000
- # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
- spring.datasource.timeBetweenEvictionRunsMillis=60000
- # 配置一个连接在池中最小生存的时间,单位是毫秒
- spring.datasource.minEvictableIdleTimeMillis=300000
- spring.datasource.validationQuery=SELECT 1 FROM DUAL
- <!-- 空闲时检测,此处已定要设为true,不然 timeBetweenEvictionRunsMillis不起作用-->
- spring.datasource.testWhileIdle=true
- #获取连接时候验证,如果无效,则生成新的连接使用,会影响性能 (此处设为true最为保险,但是为影响性能)
- spring.datasource.testOnBorrow=false
- <!-- 返回给线程池时检测连接有效性 -->
- spring.datasource.testOnReturn=false
- # 打开PSCache,并且指定每个连接上PSCache的大小
- spring.datasource.poolPreparedStatements=true
- spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
- # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
- spring.datasource.filters=stat,wall,log4j
- # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
- spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
- # 合并多个DruidDataSource的监控数据
- spring.datasource.useGlobalDataSourceStat=true
- #druid datasouce database settings end

durid 连接池监控等具体配置请参看https://blog.csdn.net/u013378306/article/details/80036061
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。