问题描述
这个spring配置,在使用过程中,基本上没插入200条数据后,通过mysql或netstat就可看到数据库连接达到10个,
并且mysql里面全部都是sleep状态。连接并没有释放,在等几十条后就出现异常。
dbcp配置
spring 注解事务
以下为stack信息
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is mons.dbcp.SQLNestedException: Cannot get a connection, cause: Timeout waiting for idle object, cause: Timeout waiting for idle object
### The error may exist in configure/mybatis/User.xml
### The error may involve novel.Novel_read
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is mons.dbcp.SQLNestedException: Cannot get a connection, cause: Timeout waiting for idle object, cause: Timeout waiting for idle object
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23) ~[mybatis-3.2.3.jar:3.2.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107) ~[mybatis-3.2.3.jar:3.2.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98) ~[mybatis-3.2.3.jar:3.2.3]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62) ~[mybatis-3.2.3.jar:3.2.3]
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_45]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_45]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358) ~[mybatis-spring-1.2.1.jar:1.2.1]
... 45 common frames omitted
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is mons.dbcp.SQLNestedException: Cannot get a connection, cause: Timeout waiting for idle object, cause: Timeout waiting for idle object
mysql状态采样(其余一样,共10个)
| 3 | root | localhost:34779 | test_db | Sleep | 659 | | NULL |
网络状态采样(其余一样,共10个)
tcp 0 0 ::ffff:127.0.0.1:34941 ::ffff:127.0.0.1:3306 ESTABLISHED 23223/java
使用c3p0和tomcat连接池均测试过,问题依旧存在。
c3p0配置如下:
软件版本
mysql版本5.6.14
mysql-connector 5.1.22
执行的插入SQL
insert into LT_USER (
NAME,
DESCN,
IMG,
CATEGORY_ID,
IS_FINISH,
CREATE_DATE,
STATUS
) values (
#{name, jdbcType=VARCHAR},
#{descn, jdbcType=VARCHAR},
#{img, jdbcType=VARCHAR},
#{categoryId, jdbcType=NUMERIC},
#{isFinish},
#{createDate},
#{status}
)
@Repository
public class UserDao extends SqlSessionDaoSupport {
public long create(final String sqlId, final Parameter parameter) {
return this.getSqlSession().insert(sqlId, parameter.getCriteria());
}
}
事务配置
如果觉得《dbcp释放不了mysql链接_spring dbcp连接不释放-问答-阿里云开发者社区-阿里云》对你有帮助,请点赞、收藏,并留下你的观点哦!