zoukankan      html  css  js  c++  java
  • jdbc autoReconnect=true 参数设置导致 slow log 爆表。

    1.过程

    同事按照文档上配置了下面的jdbc url:

    jdbc:mysql://ip:port/db?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
    

      

    结果导致了 mysql slow log 出现了满屏的 ping 命令,

    # User@Host: db[db] @  [ip]
    # Query_time: 0.000017  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0 Logical_reads: 0 Physical_reads: 0
    SET timestamp=1456991083;
    # administrator command: Ping;
    

      

    $ ll -h mysqlslow20161115.log
    -rw-rw---- 1 dba dba 58G Nov 15 14:17 mysqlslow20161115.log

    最后我找到其他同事询问他们怎么配置的,为什么他们的业务没有生成这么多日志呢?最后对比以后发现,其他同事配置了  dbcp  框架,通过dbcp 框架来提供连接池。

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.user}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="200" />
            <property name="maxIdle" value="30" />
            <property name="maxWait" value="500" />
            <property name="defaultAutoCommit" value="true" />
            <property name="minEvictableIdleTimeMillis" value="3600000" />
            <property name="timeBetweenEvictionRunsMillis" value="600000" />
        </bean>

    其中 jdbc.url  参数和前面一个同事么有区别(ip port db 除外)。

    最后解决办法:

    考虑到再让他们加框架比较费劲,就让开发把   autoReconnect=true 取消掉了。tail -f mysqlslow.log 没有发现新增的了。看来裸加一个 autoReconnect 还是很不靠谱的。最后推荐一篇我搜索时候找到的一篇连接:https://www.percona.com/blog/2010/05/05/checking-for-a-live-database-connection-considered-harmful/

      

     

  • 相关阅读:
    js 为表格增加行 动态
    百度测试新搜索结果页面 改进灵感来自谷歌?
    多线程程序中使用fork的问题
    C++ struct和class的区别
    J2SE 5 HotSpot JVM 解释
    并行优化、xvout
    C++基础:纯虚函数和抽象类
    C++的四种cast
    logcat过滤输出
    C++虚函数和纯虚函数(2)
  • 原文地址:https://www.cnblogs.com/liushuiwuqing/p/6065887.html
Copyright © 2011-2022 走看看