为了账号安全,请及时绑定邮箱和手机立即绑定

一段时间不访问错误500,刷新一下就好了。

一段时间不访问错误500,刷新一下就好了。

千巷猫影 2019-03-23 15:14:43
碰到一个奇怪的问题,不知道怎么处理,求指教。。一个小的javaWeb项目放在阿里云的linux服务器上,数据库用的是mysql,web采用的是springmvc+mybatis,dbcp连接池。现在问题是一段时间不访问,再突然访问就会错误500,然后刷新一下页面就好了,也不会报错误信息。怀疑是不是连接休眠啥的。这是关于连接池的配置:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"          destroy-method="close">          <property name="driverClassName" value="${driver}" />          <property name="url" value="${url}" />          <property name="username" value="${username}" />          <property name="password" value="${password}" />          <!-- 初始化连接大小 -->          <property name="initialSize" value="0"></property>          <!-- 连接池最大数量 -->          <property name="maxActive" value="20"></property>          <!-- 连接池最大空闲 -->          <property name="maxIdle" value="20"></property>          <!-- 连接池最小空闲 -->          <property name="minIdle" value="1"></property>          <!-- 获取连接最大等待时间 -->          <property name="maxWait" value="60000"></property>      </bean> 看到错误日志了:the fallback translator2016-09-22 21:11:44,498 [http-bio-80-exec-10] DEBUG [org.mybatis.spring.SqlSessionUtils] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@b370e4f]2016-09-22 21:11:44,498 [http-bio-80-exec-10] DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Returning JDBC Connection to DataSource2016-09-22 21:11:44,499 [http-bio-80-exec-10] DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Could not close JDBC Connectionjava.sql.SQLException: Already closed.    at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191)    at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341)    at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)    at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

除了楼上的设置之外,你可以设置每隔多少秒去数据库select 1一下,用来保持这个链接的生存


查看完整回答
反对 回复 2019-04-24
?
智慧大石

TA贡献1946条经验 获得超3个赞

这个是因为你连接池中配置的连接等待时间过长,mysql已经认为连接过期了。
解决办法如下

1、修改my.cnf延长连接超时时间
[mysqld]
wait_timeout=31536000 
interactive_timeout=31536000

2、在连接URL上添加参数
autoReconnect=true&failOverReadOnly=false


查看完整回答
反对 回复 2019-04-24
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

spring.datasource.adanos.initialSize=1

spring.datasource.adanos.minIdle=1

spring.datasource.adanos.maxActive=30

spring.datasource.adanos.maxWait=60000

spring.datasource.adanos.timeBetweenEvictionRunsMillis=60000

spring.datasource.adanos.minEvictableIdleTimeMillis=300000

spring.datasource.adanos.validationQuery=select x

spring.datasource.adanos.testWhileIdle=true

spring.datasource.adanos.testOnBorrow=false

spring.datasource.adanos.testOnReturn=false

spring.datasource.adanos.poolPreparedStatements=true

spring.datasource.adanos.maxPoolPreparedStatementPerConnectionSize=10

spring.datasource.adanos.filters=stat


查看完整回答
反对 回复 2019-04-24
  • 3 回答
  • 0 关注
  • 1007 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信