查看mysql连接池命令:SHOW VARIABLES LIKE '%max_connections%';
![]()
查看mysql timeout命令:SHOW VARIABLES LIKE '%timeout%'

Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。
wait timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天
MySQL通过my.ini 在
# The TCP/IP Port the MySQL Server will listen on
port=3306
下面添加
DBCP配置说明:
initialSize=10 连接池启动时创建的初始化连接数量(默认值为0)
minIdle=5 minIdle: 最小空闲连接,低于这个数量会被创建新的连接;该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接
maxIdle=30 最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数 上升超过maxIdle,而造成频繁的连接销毁和创建,
maxActive=200 最大连接数量 这个值一般设成与用户并发数相同
maxWait=60000 最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限,调整为60000ms,避免因线程池不够用,而导致请求被无限制挂起)
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每 timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过 minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止 主要把这两个参数加上就好。
mysql配置中的wait_timeout值一定要大于等于连接池的 minEvictableIdleTimeMillis值,否则mysql会在wait_timeout的时间后关闭连接,然而连接池还认为该连接可用,这样就会产生异常。
removeAbandoned=true 是否清理 如果开启了removeAbandoned,当getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发.
removeAbandonedTimeout=1800 秒没有使用的活动连接,清理后并没有放回连接池
logAbandoned=true 连接池收回空闲的活动连接时是否打印消息
poolPreparedStatements=false 开启池的prepared(默认是false,未调整,经过测试,开启后的性能没有关闭的好。)
maxPoolPreparedStatementPerConnectionSize=20 开启池的prepared 后的同时最大连接数(默认无限制,同上,未配置)
来源:oschina
链接:https://my.oschina.net/u/2322635/blog/750204