db.initialPoolSize=200 它们把这个 改成 1....就好了.
maxIdletimeout =30
orm层的 initialPoolSize + maxIdletimeout 还是要跟mysql的timeout 紧密配合..不然真是像个死循环一样.
总之 maxIdletimeout > Mysql的 wait_timeout了,, 就容易死循环..
Tomcat启动的流程 目测:
jdbc.minPoolSize=10
需求正常下,开一个10的pool ,不够再增加10个,
jdbc.maxIdleTime=30
超过30s空闲,释放各个连接,
poolMaximumIdleConnections =0 #最大空闲连接数
因为我们系统是采用Mybatis,会判断当前空闲连接数和poolMaximumIdleConnections的大小,如果小于他,会new PooledConnection并放进队列中,这就导致一个问题,当所有的连接被占满后,Mybatis为了保持一定的空闲连接,会不断获取新的连接,然后这些新连接被占用后,就会再去new PooledConnection,结果就是超过了mysql设置的最大连接数,
Mysql:
connect_timeout在获取连接阶段(authenticate)起作用,interactive_timeout和wait_timeout在连接空闲阶段(sleep)起作用,而net_read_timeout和net_write_timeout则是在连接繁忙阶段(query)起作用。
net_read_timeout是第一步认证(默认3s),wait_timeout(默认120s)是第二步回归数据
wait_timeout mysql的一个connection空闲时间超过8小时,mysql会自动断开该连接。
要连interactive_timeout一起改。