首页 > 代码库 > jdbc autoReconnect=true 参数设置导致 slow log 爆表。
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=http://www.mamicode.com/"${jdbc.driverClassName}" /> <property name="url" value=http://www.mamicode.com/"${jdbc.url}" /> <property name="username" value=http://www.mamicode.com/"${jdbc.user}" /> <property name="password" value=http://www.mamicode.com/"${jdbc.password}" /> <property name="maxActive" value=http://www.mamicode.com/"200" /> <property name="maxIdle" value=http://www.mamicode.com/"30" /> <property name="maxWait" value=http://www.mamicode.com/"500" /> <property name="defaultAutoCommit" value=http://www.mamicode.com/"true" /> <property name="minEvictableIdleTimeMillis" value=http://www.mamicode.com/"3600000" /> <property name="timeBetweenEvictionRunsMillis" value=http://www.mamicode.com/"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/
<style>p.p1 { margin: 0.0px 0.0px 0.0px 15.0px; font: 13.0px Times }</style>
jdbc autoReconnect=true 参数设置导致 slow log 爆表。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。