Mysql数据库连接

发表于 2013年11月29日 17:36 | 作者 云游四方 | 阅读 ( 1287 ) | 类别 ( 工作积累 ) | 标签 (autoReconnect mysql )
  1. 即使在创建Mysql时url中加入了autoReconnect=true参数,一但这个连接两次访问数据库的时间超出了服务器端wait_timeout的时间限制,还是会CommunicationsException: The last packet successfully received from the server was xxx milliseconds ago.

  2. 对于tomcat的server.xml中使用的连接池

<Resource name="jdbc/test" auth="Container"
    type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"
    username="root" password="test" maxActive="500" maxIdle="10" maxWait="-1"
    timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" />
  1. 设置validationQuery,这样每次borrow(默认为开启)时会通过这个sql校验连接的有效性,但是增加了时间.

  2. 设置timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" 依赖evictor thread线程来把超时的连接关闭.

  3. 设置testWhileIdle="true" timeBetweenEvictionRunsMillis="10000" validationQuery="select 1" 使得定时去用query检测处于idle状态的连接,也就刷新了服务器端的时间.


12.2K
  1. Ardi
    2013年07月17日 22:24

    Your articles are for when it abstuloely, positively, needs to be understood overnight.

昵称
电子邮箱

返回顶部