数据库mysql调优

news/2023/5/28 7:20:45

在这里插入图片描述
问题描述:

      mysql dba在mysql服务端启用了连接在空闲一定时间 (10分钟) 后,就自动关闭连接(连接失效)的功能,导致java端连接池在空闲一段时间后,连接被自动关闭(自动失效)。为了避免这种情况出现,可以在dbcp上配置空闲的时候检测连接池线程功能。一些新建的数据库,DBA设置了超时空闲失效时间(即一个连接超过多长时间空闲,该连接将失效),而我们的很多程序使用的是DBCP连接池

默认参数的情况下 连接池是不会自动去检测某个连接是否失效的。这样程序如果获到的是已经失效的链接,将会出现报错。

解决原理:
DBCP使用Apache的ObjectPool作为Connection Pool的实现,在构造GenericObjectPool的时候,会生成一个Inner Class Evictor,实现Runnable的接口。如果属性_timeBetweenEvictionRunsMillis > 0,每过_timeBetweenEvictionRunsMillis毫秒后Evictor会调用evict method,检查Object的idle time是否大于属性_minEvictableIdleTimeMillis毫秒(如果_minEvictableIdleTimeMillis设置为<=0则忽略,使用default value 30分钟),如果是则销毁该Object

数据连接池默认配置带来的坑testOnBorrow=false,cloes_wait 终于解决了
服务性能优化总结

总结

1.testOnBorrow能够确保我们每次都能获取到可用的连接,但是如果设置为true,则每次获取连接时候都要到数据库验证连接有效性,这在高并发的时候会造成性能下降,可以将testOnBorrow设置成false,testWhileIdle设置成true + timeBetweenEvictionRunsMillis+numTestsPerEvictionRun这样能获得比较好的性能。

2.testOnBorrow和testOnReturn在生产环境一般是不开启的,主要是性能考虑。失效连接主要通过testWhileIdle保证,如果获取到了不可用的数据库连接,一般由应用处理异常。

mysql调优中关注的参数:

validationQuery
用来检测连接是否有效的sql,如果validationQuery为空,那么testOnBorrow、testOnReturn、testWhileIdle这三个参数都不会起作用,因为这三个参数都是通过执行参数validationQuery指定的SQL来验证数据库连接的有效性,配置参考:validationQuery=SELECT 1

testWhileIdle
建议配置为true。对性能影响很小,因为是定期检查。如果连接空闲时间大于timeBetweenEvictionRunsMillis指定的毫秒,就会执行参数validationQuery指定的SQL来检测连接是否有效。

testOnBorrow
建议配置为false。获取连接时执行validationQuery检测连接是否有效,这个配置会降低性能。

testOnReturn
建议配置为false。归还连接时执行validationQuery检测连接是否有效,这个配置会降低性能。

timeBetweenEvictionRunsMillis
(设置的Evict线程的时间,单位:毫秒,即每隔多少时间去检测一次空闲连接是否超时,默认值为-1,即不开启)
minEvictableIdleTimeMillis
(空闲逐出 连接池的时间,单位:毫秒,默认30分钟)
numTestsPerEvictionRun
(设定在进行后台对象清理时,每次检查几个链接。默认值是3.
如果numTestsPerEvictionRun>=0, 则取numTestsPerEvictionRun 和池内的链接数 的较小值 作为每次检测的链接数
如果numTestsPerEvictionRun<0,则每次检查的链接数是检查时池内链接的总数乘以这个值的负倒数再向上取整的结果。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4558303.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Cloudxns使用心得

先奉上xns的主要功能列表让大家一睹为快&#xff0c;详细可见官网&#xff0c;如下&#xff1a; 功能还是很多的&#xff0c;下面介绍几个方面&#xff1a; 1. CloudXNS域名解析的线路分为三个层次&#xff1a;分别为ISP级、区域组级及区域(省市)级&#xff0c;默认的是全…

解决 vue debugger 定位不准确

module.exports { configureWebpack: { // webpack 配置 devtool: ‘source-map’, } }

解决Appium Desktop 测试中,元素不能准确定位的问题

在Appium desktop 测试中&#xff0c;会经常遇到元素不能准确定位的问题&#xff0c;以百度地图为测试实例&#xff0c;当进入主界面后&#xff0c;要定位 "退出“ 这个 element&#xff0c;通过 appium desktop 去定位时&#xff0c;如下图&#xff0c;看似定位到 id值为…

Selenium+iframe准确定位元素

简单介绍 我们发现该网站有两个框架&#xff1a; 网页代码如下所示&#xff1a; 我们发现iframe对应着单独的一个框架&#xff0c;因此我们定位元素时&#xff0c;要判断该元素有没有嵌套在iframe框架中。 程序示例 以天猫登陆界面为例&#xff0c;网址https://login.t…

关于微信小程序获取准确定位的方法及解决定位不准确的问题

微信小程序给我们提供了三个获取位置的接口&#xff0c;但是没有返回一个准确地址的方法。 好在腾讯地图准们为小程序提供了接口SDK来获取位置信息。 文档地址如下&#xff1a;http://lbs.qq.com/qqmap_wx_jssdk/index.html SDK使用方法请参照该文档。 下载好了SDK后&#xff…

selenium之判断是否定位正确

编辑器&#xff1a;VSCODE 语言&#xff1a;python 问题描述&#xff1a;当我们定位一个元素时&#xff0c;比如元素有id&#xff0c;name等&#xff0c;都可以进行定位&#xff0c;那么如何判断自己定位的是否正确呢&#xff1f; 今天主讲第二种&#xff1a; 方法一&#…

使用pyautogui和inspect快速准确定位鼠标位置

[TOC] 1.前言 1.前言 最近在研究客户端软件进行Python自动化测试时&#xff0c;知道了pyautogui这个库&#xff0c;然后在csdn搜索相关资料时&#xff0c;看到某位老师写的文章&#xff0c;文章在此&#xff1a;女朋友让我深夜十二点催她睡觉&#xff0c;我有Python我就不干 …

小程序uni-app的api

小程序uni-app的apiuni api简介uni api使用uni-app自定义组件—传统方式核心步骤uni-app自定义组件—easycom简介核心步骤uni-app组件库uViewUIuview介绍关键步骤uni api简介 uni-api 指的是uni-app 针对一些 微信小程序api所做的封装它解决了两个问题 原生的小程序api不支持…

实现opencv在图片上画框准确定位某个主体

前言 本章主要讲述图片的缩小与放大&#xff0c;以及在图片上框出自己目标的东西 目录 实现opencv在图片上画框准确定位某个主体 一、如何在opencv内导入图片 二、如何对图片进行缩放&#xff1f; 1.在放入图片的基础上进行缩放 2.运行程序 三.如何在图片上框出我们想要的…

至少需要多少颗卫星才能准确定位?

说到卫星定位系统&#xff0c;大家都会想到 GPS&#xff08;Global Positioning System&#xff0c;全球定位系统&#xff09;。GPS 是美国从上世纪 70 年代开始研制&#xff0c;历时 20 年&#xff0c;耗资 200 亿美元&#xff0c;于 1994 年全面建成&#xff0c;具有在海、陆…

84. 双向循环神经网络

1. 未来很重要 取决于过去和未来的上下文&#xff0c;可以填很不一样的词目前为止RNN只看过去在填空的时候&#xff0c;我们也可以看未来城 2. 双向RNN 两个隐状态层&#xff0c;并行计算隐状态&#xff0c;但是隐状态传播方向相反。 公式如下&#xff1a; 3. 推理 双向RNN不…

m3u8视频格式分析

“ 学习m3u8格式。” 一段时间之前&#xff0c;乘着某美女CEO的东风&#xff0c;学习了一个新的数据格式&#xff0c;即m3u8格式。 经过一段时间的沉淀&#xff0c;美女CEO的热潮大概已经褪去&#xff0c;今天才对这个格式进行分析&#xff0c;嘻嘻。 先介绍下来龙去脉&#xf…

软件工程与计算II-13-详细设计中的模块化与信息隐藏

13-详细设计中的模块化与信息隐藏 1. 内聚和耦合 概念重要 内聚&#xff1a;内聚表达的是一个模块内部的联系的紧密型&#xff1a;包括信息内聚、功能内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。 public class Rous{public static int findPattern(String te…

世界是数字的重点读书笔记(计算机科普知识)

《世界是数字的》是世界顶尖计算机科学家Brian W.Kernighan写的一本计算机科普类读物&#xff0c;简明扼要但又深入全面地解释了计算机和通信系统背后的秘密&#xff0c;适合计算机初学者和非计算机专业的人读。这真的是一本好书&#xff0c;借Google常务董事长的话&#xff1a…

那些你基本够用的 基础数据类型 和 fmt 用法 【说人话的 Golang 小白入门 - EP03】

根据官方教程 https://tour.golang.org/basics/11&#xff0c;Golang 支持以下基础数据类型 &#xff08;Basic Types&#xff09; boolstringint int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32// repre…

FocusBI: 商业智能场景(原创)

关注微信公众号&#xff1a;FocusBI 查看更多文章&#xff1b;加QQ群&#xff1a;808774277 获取学习资料和一起探讨问题。 《商业智能教程》pdf下载地址 链接&#xff1a;https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码&#xff1a;2r4v 商业智能&#xff08…

js实现Luhn算法(模10算法、校验银行卡)

废话不多说 直接上代码 function testPaycard(payCard) {// 没有传银行卡if (!payCard) {return true;}// 非数字if (isNaN(payCard)) {return false}// 银行卡位数为16或19位if (String(payCard).length ! 16 && String(payCard).length ! 19) {return false}const e…

TF-IDF与余弦相似性的应用(三):自动摘要

有时候&#xff0c;很简单的数学方法&#xff0c;就可以完成很复杂的任务。 这个系列的前两部分就是很好的例子。仅仅依靠统计词频&#xff0c;就能找出关键词和相似文章。虽然它们算不上效果最好的方法&#xff0c;但肯定是最简便易行的方法。今天&#xff0c;依然继续这个主…

Java是如何制作月饼的——制作、下单和售卖

前言 &#x1f4eb;作者简介&#xff1a;小明Java问道之路&#xff0c;专注于研究计算机底层/Java/Liunx 内核&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计&#x1f4eb; &#x1f3c6; CSDN专家博主/内容合伙人/…

php下单流程,Thinkphp5.0支付宝在线支付下单整个流程实例

Thinkphp5.0支付宝在线支付下单整个流程实例&#xff0c;包括创建订单、支付成功回调更新订单状态、最终跳转到商户订单详情页支付宝在线支付控制器代码public function alipay() {//发起支付宝支付$order_no date("YmdHis") . rand(100000, 999999);if (request()-…