• mysql连接超时与jndi数据源配置


    昨天有运营说添加活动不能用了,我就看了一下后台日志,发现访问数据库是报错:

            at java.lang.Thread.run(Thread.java:722)
    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 59,085,803 milliseconds ago.  
    The last packet sent successfully to the server was 59,085,806 milliseconds ago.
    is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application,
    increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. at sun.reflect.GeneratedConstructorAccessor377.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3358) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1970) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)

    意思就是数据库有长连接,长时间没有使用数据库,并且空闲时间超过了数据库配置的wait_timeout设置的时间。到了wait_timeout的时间,数据库就会释放连接。一般的思路是,改数据库的wait_timeout时间,这个方法可行,但是并不是最好的

    因为,mysql的最大超时时间是2147483。所以我们的逻辑就要转到mysql链接来

    (1) JNDI数据源:

    我们使用的是jndi数据源配置如图:

    <Resource name="jdbc/assistMaster"
              type="javax.sql.DataSource"
              url="jdbc:mysql://weatherDB1:3308/assist"
              driverClassName="com.mysql.jdbc.Driver"
              username="adbconn1"
              password="6vjuN8qC"
              maxActive="30"
              maxIdle="10"
              maxWait="10000"
    />

    需要添加如下的连接测试

     validationQuery = "SELECT 1"
              testWhileIdle = "true"
              timeBetweenEvictionRunsMillis = "3600000"
              minEvictableIdleTimeMillis = "18000000"
              testOnBorrow = "true"

    (2)jdbc数据源配置

    jdbc:mysql://10.10.10.10:3306/mydb?autoReconnect=true

    (3)Spring中使用DBCP连接池,在定义datasource增加属性validationQuery和testOnBorrow

    <bean id="vrsRankDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${countNew.jdbc.url}" />
        <property name="username" value="${countNew.jdbc.user}" />
        <property name="password" value="${countNew.jdbc.pwd}" />
        <property name="validationQuery" value="SELECT 1" />
        <property name="testOnBorrow" value="true"/>
    </bean>

    (4)

    如果是在Spring中使用c3p0连接池,则在定义datasource的时候,添加属性testConnectionOnCheckin和testConnectionOnCheckout,如:

    <bean name="cacheCloudDB" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${cache.url}"/>
    <property name="user" value="${cache.user}"/>
    <property name="password" value="${cache.password}"/>
    <property name="initialPoolSize" value="10"/>
    <property name="maxPoolSize" value="${cache.maxPoolSize}"/>
    <property name="testConnectionOnCheckin" value="false"/>
    <property name="testConnectionOnCheckout" value="true"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
    </bean>

    2.jndi数据源配置

    (1) 什么是jndi

    http://blog.csdn.net/liujiahan629629/article/details/20568475

    http://www.cnblogs.com/ITtangtang/archive/2012/05/21/2511749.html

    http://blog.csdn.net/jiangguilong2000/article/details/12523771

    http://blog.csdn.net/beijixingtianyake/article/details/49927761

  • 相关阅读:
    UGUI Toggle控件
    UGUI Scrollbar控件
    利用头插法——创建、遍历链表
    函数指针
    opencv 图像通道操作
    三维点云匹配算法
    点与三角形位置关系
    室内场景mesh 的自动分块---用于加载显示,参数化等
    eigen 四元数
    string 、char*、const char *
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5714557.html
Copyright © 2020-2023  润新知