关于Mybatis的一次pingQuery时间间隔的实践及思考
转眼间离这次问题的实践过程已经过去了一两个月了,现在想来自己的问题并不是不知道那么简单了,所以很有必要记录下来,算是一次警戒吧
废话不多说,直入主题。
我的直接上级准备将公司的后台管理系统由PHP转为JAVA。于是在他将基本架构搭建好后,我就开始干活了,当时第一周期是准备 将图片审核先快速完成上线,于是我天真地以为真的只是让我做做而已,没想到在测试人员刚把bug和问题都报我解决了之后便仓促 上线,可以说打了个我促不及防,果真,上线几天便出问题了,客服人员好几次报了错误提示,大概The last packet successfully received from the server was 2,907,745 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.,起初一看只报了一次便没理它,谁知过了几天突然一次性报了10次,于是考虑到问题到了非解决不可的地步,便让客服人员先用老系统来审核图片。 出了问题怎么办,首先想到的是查日志,一查之下十分失望,日志里面根本没有该错误提示,该提示直接输出到控制台了,于是想着 重现吧,但是在测试服务器上怎么也重现不出来,百思不得其解之下又回到了老路:上搜索引擎,毕业广大人民群众的智慧是无穷的嘛! 找啊找啊找朋友,找到一个好朋友,咦,差点忘了程序员怎么能找到朋友吧,就算是男朋友也行啊哈哈,终于在枯藤老树昏鸦,小桥流水 人家......断肠人在天涯的心情下涌现了无数篇关于Mybatis的文章解读,可是它的配置参数一个都不熟悉,只得在众多已经躺过坑的朋友 的建议下下载了Mybatis的源码来看,咦,这就是传说中的源代码么?!这么简单?看来我还是有成为代码大神的潜力嘛。终于,还是没有 看出个所以然来,正如你所认为的结局一下。
等一下,雀的玛德,果然解BUG只,在两天两夜的万千思有乱猜才是终极大招绪中,终于碰了碰运气将poolPingConnectionsNotUsedFor 参数值由60000改到了20000,果然,到目前一个月了,再没报相关问题了。那么问题出在哪儿呢,原来,mysql对一个连接的时间是8个小时,按理说60秒不应该超时啊,可是实际情况是,由于公司的APP上用户 量过万,8个小时的连接超时时间太过浪费,于是将时间改为30秒,看到这儿有些朋友可能知道问题出在哪儿了,没错,由于当初设置的 _poolPingConnectionsNotUsedFor_值大于30秒,导出会出现连接被mysql强行关闭的情况,而mybatis连接池却不知情,于是会出现 执行操作会报异常的情况。
好了,现在回过头来看一看这个poolPingConnectionsNotUsedFor参数到底是神马鬼!顾名思义,连接池在闲置连接没有被使用多少 秒后会去ping一下mysql看该连接是否已经被断开,如果被断开,该连接将不会被拿来使用,而是直接释放并重新看其它的连接是否可用, 而如果该连接还未超过设置的时间,就拿来使用。好了,如果有不懂的,可以联系我,我会尽量解决的,联系方式嘛,相信你会找到的。
关于Mybatis的一次pingQuery时间间隔的实践及思考的更多相关文章
- Mybatis连接Oracle实现增删改查实践
1. 首先要在项目中增加Mybatis和Oracle的Jar文件 这里我使用的版本为ojdbc7 Mybatis版本为:3.2.4 2. 在Oracle中创建User表 create table T_ ...
- Java Persistence with MyBatis 3(中文版) 前言
对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...
- MyBatis总结与复习
Spring 主流框架 依赖注入容器/AOP实现 声明式事务 简化JAVAEE应用 粘合剂,将大家组装到一起 SpringMVC 1. 结构最清晰的MVC Model2实现 2. 高度可配置,支持 ...
- 浅析MyBatis(四):全自动写代码的MyBatis逆向工程
在前面几篇文章中,笔者介绍了 MyBatis 的运行流程,在此基础上简单介绍了手写 MyBatis 简易框架与自定义 MyBatis 插件的步骤,相信大家对于 MyBatis 框架的使用流程已经游刃有 ...
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...
- 使用mybatis-generator自动生成model、dao、mapping文件
参考文献:http://www.cnblogs.com/smileberry/p/4145872.html 一.所需库 1.mybatis-generator库 2.连接DB的驱动(此以mysql为例 ...
- 系统吞吐量(TPS)、用户并发量、性能测试、IO负载学习
目录 . 如何评价一个系统的性能 . 系统吞度量 . 网络上下行数据量 . 客户端-服务端TCP同时长连接数量 . 系统性能的指标计算 . 系统IO负载 1. 如何评价一个系统的性能 在文章的开始,我 ...
- Api项目压力测试知识荟萃
并发用户.在线用户和注册用户以及彼此之间的换算方法(估算模型).系统的最大并发用户数根据注册用户数来获得,换算方法一般是注册总人数的5%-20%之间:系统的并发数根据在线人数来获得,换算方法一般是在3 ...
- 数据库服务器---Tps
事务处理系统:Transactionprocessingsystems(TPS) 提高事务处理效率与保证其正确性 在数据(信息)发生处将它们记录下来 通过OLTP产生新的信息 将信息保存到数据库中供其 ...
随机推荐
- Android Annotations(1)
特性: Android Annotations是一个开源的框架,用于加速 Android应用的开发,可以让你把重点放在功能的实现上,简化了代码,提升了可维护性. 特性: 依赖注入: inject ...
- JavaScript中的this基本问题
在函数中 this 到底取何值,是在函数真正被调用执行的时候确定下来的,函数定义的时候确定不了. 执行上下文环境 : **定义**:执行函数的时候,会产生一个上下文的对象,里面保存变量,函数声明和th ...
- PE格式第七讲,重定位表
PE格式第七讲,重定位表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首先, ...
- win10 删除设备和驱动器中你不要的图标
设备和驱动器可能有很多你不想要的东西,360云盘,百度网盘,微云-- 删除设备和驱动器中的百度云图标,360网盘图标,要去注册表 运行 regedit 点开 HKEY_CURRENT_USER\SOF ...
- 初学者易上手的SSH-hibernate01环境搭建
这里我们继续学习SSH框架中的另一框架-hibernate.那么hibernate是什么?Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序 ...
- Linux文件系统的层级结构
Linux文件系统的层级结构 文件结构 倒置的树状结构 :Linux的哲学思想是一切皆文件,把几乎所有资源统统抽象为文件形式:包括硬件设备,甚至通信接口等 根目录 :linux的文件起始均从唯一的 ...
- PHP操作Memcached
一.PHP连接Memcached: 一个简单的使用示例: $memcache = new Memcache; $memcache->connect("127.0.0.1",1 ...
- SSM框架+slf4j 以Gradle实现
环境:win10+jdk8+tomcat9+Intellij IDEA 首先,作为一个喜欢偷懒的人,管理jar之类的的事情太累,所以用了Gradle项目管理器 第一步: 新建一个gradle-web项 ...
- d3根据数据绘制不同的形状
绘制力导向图的时候通常节点都是圆形,但也会遇到公司节点绘制成圆型,人绘制成方形的情况,那我们怎么依据数据绘制不同的形状. 你可能首先会想到,这很简单啊,是公司的时候append circle,是人的时 ...
- spark streaming 实例
spark-streaming读hdfs,统计文件中单词数量,并写入mysql package com.yeliang; import java.sql.Connection; import java ...