关于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开源项目(一)
摘要:对于开发者而言,了解当下比较流行的开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果.为此,CSDN特整理了GitHub上最受欢迎的Android及iOS开源项目,本文详细介绍了20 ...
- 双11电商剁手节,最全的H5互动营销案例合集
距离双11不足一个月! 是否准备好为双十一疯狂剁手! 自从天猫2009年首创双11购物节以来双十一不仅成为了消费者的"剁手日" 更是每年企业营销的"狂欢节" 各 ...
- 吾八哥学Python(四):了解Python基础语法(下)
咱们接着上篇的语法学习,继续了解学习Python基础语法. 数据类型大体上把Python中的数据类型分为如下几类:Number(数字),String(字符串).List(列表).Dictionary( ...
- win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock
我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...
- java分页算法,传入当前pageIndex,pageSise,dataTotal可计算出页面上显示的页码,和是否启动上一页下一页
public class CalculationPage { private Boolean showStartPagerDot; private Boolean showEndPagerDot; p ...
- PyCharm 如何安装python第三方库及插件
一.如何安装python第三方库: 1.有一个专门可下载安装第三方库的网址: http://www.lfd.uci.edu/~gohlke/pythonlibs/ Ctrl+f 搜索要下载的第三方库, ...
- route命令实例练习
第1章 命令配置 虚拟服务器 网卡配置信息 虚拟网卡名称 虚拟网卡模式 服务器01 eth1 10.0.0.10/24 nat模式 服务器02 eth2 10.0.0.11/24 nat模式 eth3 ...
- 从Matlab文件中读取mxArray类型变量-部分代码分析
这是我做的笔记,看到这个代码时觉得处理有点妙,做笔记记录之. 部分源代码: .... int main(int argc,char** argv) { char name[_FILE_NAME_LEN ...
- D3.js使用过程中的常见问题(D3版本D3V4)
目录 一.学习D3我必须要学习好SVG矢量图码? 二.如何理解D3给Dom节点绑定数据时的Update.Enter和Exit模式 三.D3绑定数据时用datum与data有什么不一样? 四.SVG图中 ...
- display:none,float小秘密
一个元素不管是块元素还是行内元素 在添加了 display:none 之后,就变成了不可见的块元素,可以给他添加长度和高度 在float之后内联元素也会隐性成为 inline-block ...