转眼间离这次问题的实践过程已经过去了一两个月了,现在想来自己的问题并不是不知道那么简单了,所以很有必要记录下来,算是一次警戒吧

废话不多说,直入主题。

我的直接上级准备将公司的后台管理系统由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时间间隔的实践及思考的更多相关文章

  1. Mybatis连接Oracle实现增删改查实践

    1. 首先要在项目中增加Mybatis和Oracle的Jar文件 这里我使用的版本为ojdbc7 Mybatis版本为:3.2.4 2. 在Oracle中创建User表 create table T_ ...

  2. Java Persistence with MyBatis 3(中文版) 前言

    对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...

  3. MyBatis总结与复习

    Spring 主流框架 依赖注入容器/AOP实现 声明式事务 简化JAVAEE应用 粘合剂,将大家组装到一起 SpringMVC 1.  结构最清晰的MVC Model2实现 2.  高度可配置,支持 ...

  4. 浅析MyBatis(四):全自动写代码的MyBatis逆向工程

    在前面几篇文章中,笔者介绍了 MyBatis 的运行流程,在此基础上简单介绍了手写 MyBatis 简易框架与自定义 MyBatis 插件的步骤,相信大家对于 MyBatis 框架的使用流程已经游刃有 ...

  5. 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式

    PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  6. 使用mybatis-generator自动生成model、dao、mapping文件

    参考文献:http://www.cnblogs.com/smileberry/p/4145872.html 一.所需库 1.mybatis-generator库 2.连接DB的驱动(此以mysql为例 ...

  7. 系​统​吞​吐​量​(​T​P​S​)​、​用​户​并​发​量​、​性​能​测​试、IO负载学习

    目录 . 如何评价一个系统的性能 . 系统吞度量 . 网络上下行数据量 . 客户端-服务端TCP同时长连接数量 . 系统性能的指标计算 . 系统IO负载 1. 如何评价一个系统的性能 在文章的开始,我 ...

  8. Api项目压力测试知识荟萃

    并发用户.在线用户和注册用户以及彼此之间的换算方法(估算模型).系统的最大并发用户数根据注册用户数来获得,换算方法一般是注册总人数的5%-20%之间:系统的并发数根据在线人数来获得,换算方法一般是在3 ...

  9. 数据库服务器---Tps

    事务处理系统:Transactionprocessingsystems(TPS) 提高事务处理效率与保证其正确性 在数据(信息)发生处将它们记录下来 通过OLTP产生新的信息 将信息保存到数据库中供其 ...

随机推荐

  1. Selenium 设置浏览器下载 Firefox 和Chrome

    当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置,将使这 ...

  2. 推荐系统架构-(附ppt&代码)

    Part1.乐视网视频推荐系统 推荐系统:和传统的推荐系统架构无异(基础建模+规则) 数据模块特点:用户反馈服务数据->kv 缓存->log存储 行为日志->解析/聚合->se ...

  3. Java8之旅(七) - 函数式备忘录模式优化递归

    前言 在上一篇开始Java8之旅(六) -- 使用lambda实现Java的尾递归中,我们利用了函数的懒加载机制实现了栈帧的复用,成功的实现了Java版本的尾递归,然而尾递归的使用有一个重要的条件就是 ...

  4. 【译】10分钟学会Pandas

    十分钟学会Pandas 这是关于Pandas的简短介绍主要面向新用户.你可以参考Cookbook了解更复杂的使用方法 习惯上,我们这样导入: In [1]: import pandas as pd I ...

  5. window下eclipse4.5+hadoop2.6.1开发环境配置

    1.准备: eclipse4.5,hadoop2.6.1,hadoop-eclipse-plugin-2.6.0.jar. 2.eclipse配置 eclipse->windows->Pr ...

  6. C# orderby子句

    注意:对联接运算的结果进行排序. 请注意,排序在联接之后执行. 虽然可以在联接之前将 orderby 子句用于一个或多个源序列,不过通常不建议这样做. 某些 LINQ 提供程序可能不会在联接之后保留该 ...

  7. php header设置页面编码

    php header设置页面编码 未分类 PHP 页面编码声明方法详解(header或meta) http://www.jb51.net/article/22501.htm PHP 页面编码声明与用h ...

  8. 百度Echarts导入

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. Python datetime之timedelta

    该函数表示两个时间的间隔 参数可选.默认值都为0:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minut ...

  10. HTTP中的Range: bytes=0-

    HTTP中的Range就是分段请求字节数,也是大家经常说的断点续传.Range头域可以请求实体的一个或者多个子范围,Range的值为0表示第一个字节,也就是Range计算字节数是从0开始的 表示第二个 ...