关于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产生新的信息 将信息保存到数据库中供其 ...
随机推荐
- Django之环境搭建以及初始配置
Django采用MVC架构,百度百科介绍如下: 全名Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业 ...
- JavaScript 开发人员需要知道的简写技巧
本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读. 本文的目的在于帮助大家更加熟练的运用 JavaScript 语言来进行开发工作. 文 ...
- Git相关操作一
1.将目录变为Git项目: 输入git init将当期目录变为Git项目 git init git项目可以被认为分为三个区域,Working Directory,Staging Area,Reposi ...
- MySQL数据库主从复制实践
MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份.高可用HA.读写分离.在配置主从复制之前需要先准备 2 台 MySQL 服务器. 一.MySQL主从原 ...
- [ACdream]女神教你字符串——违和感
题目描述: 女神最喜欢字符串了,字符串神马的最有爱了. 女神是一个重度强迫症患者,面对不是对称的东西,她会觉得太违和了,就会爆炸.所以她手上的字符串都是回文的,像什么a,b,aabaa,abcba,上 ...
- Linux系统LVM基本使用
一.关于LVM的几个概念 1. LVM:逻辑卷管理器,是建立在物理存储设备上的一个抽象层,允许你生成逻辑存储卷, 与硬件相关的存储设置被其隐藏,你不用停止应用或卸载文件系统来调整卷大小 或迁移数据,可 ...
- phalcon——Paginator分页
phalcon使用的分页器是Phalcon\Paginator. 首先先展示一个比较完整的使用例子: 控制器代码: use Phalcon\Paginator\Adapter\Model as Pag ...
- LeetCode 243. Shortest Word Distance (最短单词距离)$
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- [C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)
本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.micro ...
- VS2008 生成静态链接库并使用
1.启动VS2008创建一个Win32控制台程序 2.选择静态库 3.创建两个文件lib.h和lib.cpp //lib.h #ifndef LIB_H #define LIB_H int add(i ...