当前位置:   article > 正文

spring 项目 mysql 连接超时问题_springcloud对mysql的maxactive

springcloud对mysql的maxactive

 

mysql 超时时间查看与设置

注意:单为是秒(S)

 

  1. SHOW GLOBAL VARIABLES LIKE '%timeout%'
  2. SET GLOBAL wait_timeout=10000
  3. SET GLOBAL interactive_timeout=3;

 

也可以配置/etc/my.cnf  ,在[mysqld] 下面配置

 

  1. 【mysqld】
  2. wait_timeout=100
  3. 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进入后,查看设置已经生效。

 

普通spring web项目

注意: 此处单为是毫秒 ms

如果使用durid连接池可以在xml中做如下配置,使用其他连接池,自行查找,都差不多

  1. <!-- 数据源配置, 使用 durid 数据库连接池 -->
  2. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  3. <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
  4. <property name="driverClassName" value="${jdbc.driver}" />
  5. <!-- 基本属性 url、user、password -->
  6. <property name="url" value="${jdbc.url}" />
  7. <property name="username" value="${jdbc.username}" />
  8. <property name="password" value="${jdbc.password}" />
  9. <!-- 配置初始化大小、最小、最大 -->
  10. <property name="initialSize" value="${jdbc.pool.init}" />
  11. <property name="minIdle" value="${jdbc.pool.minIdle}" />
  12. <property name="maxActive" value="${jdbc.pool.maxActive}" />
  13. <!-- 配置获取连接等待超时的时间 -->
  14. <property name="maxWait" value="60000" />
  15. <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
  16. <property name="timeBetweenEvictionRunsMillis" value="60000" />
  17. <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
  18. <property name="minEvictableIdleTimeMillis" value="300000" />
  19. <!-- 验证 sql -->
  20. <property name="validationQuery" value="${jdbc.testSql}" />
  21. <!-- 空闲时检测,此处已定要设为true,不然 timeBetweenEvictionRunsMillis不起作用-->
  22. <property name="testWhileIdle" value="true" />
  23. <!-- 拿到连接时检测有效性,如果无效,则生成新的连接使用 -->
  24. <property name="testOnBorrow" value="false" />
  25. <!-- 返回给线程池时检测连接有效性 -->
  26. <property name="testOnReturn" value="false" />
  27. <!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
  28. <property name="poolPreparedStatements" value="true" />
  29. <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->
  30. <!-- 配置监控统计拦截的filters -->
  31. <property name="filters" value="stat" />
  32. </bean>

 

spring boot项目

 

注意 本文针对springboot 1.3.5版本,不同版本配置会有差别

注意: 此处单为是毫秒 ms

spring boot  如果不设置spring.datasource.type,默认是使用tomcat-jdbc连接池

使用tomcat-jdbc

在application.properties

  1. #验证连接的有效性 此处已定要设为true,不然 time-between-eviction-runs-millis 不起作用
  2. spring.datasource.test-while-idle=true
  3. #获取连接时候验证,如果无效,则生成新的连接使用,会影响性能 (此处设为true最为保险,但是为影响性能)
  4. spring.datasource.test-on-borrow=true
  5. spring.datasource.validation-query=SELECT 1 FROM DUAL
  6. #空闲连接回收的时间间隔,与test-while-idle一起使用,设置5分钟
  7. spring.datasource.time-between-eviction-runs-millis=300000
  8. #连接池空闲连接的有效时间 ,设置30分钟
  9. spring.datasource.min-evictable-idle-time-millis=1800000

具体参数配置参看https://blog.csdn.net/u013378306/article/details/78085366

使用druid

注意: 此处单为是毫秒 ms

pom.xml

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>druid</artifactId>
  4. <version>1.0.23</version>
  5. </dependency>

application.properties

 

  1. #druid datasouce database settings begin
  2. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  3. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  4. spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot?characterEncoding=utf-8
  5. spring.datasource.username=root
  6. spring.datasource.password=123456
  7. # 下面为连接池的补充设置,应用到上面所有数据源中
  8. # 初始化大小,最小,最大
  9. spring.datasource.initialSize=5
  10. spring.datasource.minIdle=5
  11. spring.datasource.maxActive=20
  12. # 配置获取连接等待超时的时间
  13. spring.datasource.maxWait=60000
  14. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  15. spring.datasource.timeBetweenEvictionRunsMillis=60000
  16. # 配置一个连接在池中最小生存的时间,单位是毫秒
  17. spring.datasource.minEvictableIdleTimeMillis=300000
  18. spring.datasource.validationQuery=SELECT 1 FROM DUAL
  19. <!-- 空闲时检测,此处已定要设为true,不然 timeBetweenEvictionRunsMillis不起作用-->
  20. spring.datasource.testWhileIdle=true
  21. #获取连接时候验证,如果无效,则生成新的连接使用,会影响性能 (此处设为true最为保险,但是为影响性能)
  22. spring.datasource.testOnBorrow=false
  23. <!-- 返回给线程池时检测连接有效性 -->
  24. spring.datasource.testOnReturn=false
  25. # 打开PSCache,并且指定每个连接上PSCache的大小
  26. spring.datasource.poolPreparedStatements=true
  27. spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
  28. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  29. spring.datasource.filters=stat,wall,log4j
  30. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  31. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  32. # 合并多个DruidDataSource的监控数据
  33. spring.datasource.useGlobalDataSourceStat=true
  34. #druid datasouce database settings end

durid 连接池监控等具体配置请参看https://blog.csdn.net/u013378306/article/details/80036061

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46254
推荐阅读
相关标签
  

闽ICP备14008679号