现在流行的网站开发中关村在线

news/2025/9/30 19:57:39/文章来源:
现在流行的网站开发,中关村在线,seo的基本步骤,加强廉政教育网站建设简介#xff1a; 针对数据库连接池到DRDS连接探活的优化 1. 问题背景 近期在给某专有云客户进⾏云产品应⽤性能优化分析时#xff0c;发现了⼀个有趣的关于DRDS使⽤层⾯的问题#xff0c;这⾥给⼤家分享⼀下。 使⽤过DRDS产品的同学都知道在DRDS中#xff0c;未分库分表的… 简介 针对数据库连接池到DRDS连接探活的优化 1. 问题背景 近期在给某专有云客户进⾏云产品应⽤性能优化分析时发现了⼀个有趣的关于DRDS使⽤层⾯的问题这⾥给⼤家分享⼀下。 使⽤过DRDS产品的同学都知道在DRDS中未分库分表的数据表会存储在“0号库”上对于这些表操作的SQL会被分发到“0号库”上执⾏。所以⼀般情况下0号库所在实例的压⼒会⽐其它实例的压⼒稍⼤⼀些。近期分析该客户的数据库性能时发现客户使⽤的DRDS下0号库所在的RDS实例的压⼒明显⽐其它RDS实例⾼出许多。 图1SQL语句平均每秒执行次数及事务数 2. 原因分析 通过查看0号库所在的RDS实例的执⾏SQL发现有⼤量的 SELECT x 的查询语句。检查应⽤侧代码后发现这个查询语句是应⽤侧连接池配置的连接探活SQL所有的连接池实现⼏乎都有这个功能可以通过探活SQL检测连接当前是否可⽤。 那么问题来了 为什么只有0号库所在RDS上会有⼤量此类的语句 DRDS中不带表名的⽐如 SELECT xSQL和show命令都会被下发到0号库执⾏。 对于客户端来说这种连接检测是否有⽤ 答案⼀定是有⽤的因为如果因⽹络闪断或其它原因导致的连接状态不可⽤即使获取到了连接对象也不能进⾏数据访问操作。所以这个检测是有必要的但对于使⽤DRDS作为数据源的场景来说⽬前配置的检测⽅式是存在问题的。 对于传统的数据库使⽤⽅式客户端是直接连接到底层数据库的如下图。探活SQL是直接发到连接的数据库执⾏这种场景下使⽤ SELECT x 检测客户端到数据库的连接是没有问题的。 图2客户端连接到数据库 ⽽对于使⽤DRDS作为数据源的场景来说探活语句在发送到DRDS服务后会被转发到0号库执⾏这就意味着这个探活SQL实际上检测的是客户端--DRDS--0号库的链路是否正常。 图3客户端通过DRDS连接到数据库 这⼀点可以从DRDS上看 SELECT x 的执⾏计划得到证实如下 图4执⾏结果1 实际上这样的数据源连接检测是没有意义的。因为 第⼀数据源后端实际上只检测了DRDS到0号库的连接状态DRDS到其它分库的连接状态并未检测。但真正执⾏SQL时DRDS是有可能将解析后的SQL下发到其它分库上执⾏的。 第⼆客户端探活SQL的作⽤主要是为了保证客户端连接池与数据源之间的连接是可⽤的。对于数据源背后的情况应该由数据源本身维护即由DRDS本身到RDS的连接池保障连接可⽤性⽽不应该通过客户端的探活功能来保证。 3. 解决方法 明⽩以上内容后我们解决问题的⽅案就⽐较清楚了实际上我们只需要让客户端连接池检测客户端到DRDS的连接状态即可。那有没有这样的检测⽅法呢 答案当然是有的经过与DRDS研发同学确认将探活SQL修改为 SELECT x FROM dual 即可。 修改后再次在DRDS查看执⾏计划如下 图5执⾏结果2 在应⽤侧修改连接池的探活SQL配置后从0号库所在实例上看已经看不到探活SQL的执⾏记录⽽且从修改前和修改后0号库所在实例的压⼒来看效果也⽐较明显0号库的压⼒相⽐之前下降了⼤概80%左右。 图6SQL语句平均每秒执行次数及事务数2 4. 连接池参数配置 ⾄此0号库压⼒过⾼的问题解决了下⾯我们聊聊为什么会有⼤量的探活语句出现。 探活机制实际上是数据源连接池通⽤的⼀种检测机制可以检测连接池内的连接对象是否真的可⽤。拿Druid连接池举例探活SQL是通过数据源的 validationQuery 属性配置的。与之相关的配置属性还有testOnBorrow、testWhileIdle、testOnReturn、timeBetweenEvictionRunsMillis、 minEvictableIdleTimeMillis。官⽅解释如下 testOnBorrow申请连接时执⾏ validationQuery 配置的探活语句检测连接是否有效。 testWhileIdle申请连接的时候检测如果空闲时间⼤于timeBetweenEvictionRunsMillis 执⾏ validationQuery 检测连接是否有效。 testOnReturn归还连接时执⾏ validationQuery 检测连接是否有效。 timeBetweenEvictionRunsMillis有两个含义 1)Destroy线程检测连接的间隔时间如果连接空闲时间⼤于等于 minEvictableIdleTimeMillis 则关闭物理连接。 2)testWhileIdle 的判断依据详细看 testWhileIdle 属性的说明。 minEvictableIdleTimeMillis连接保持空闲⽽不被驱逐的最⼩时间。 ⽂章前⾯描述的出现⼤量探活SQL的情况是因为应⽤将连接池的testOnBorrow设置成了true所以在每次应⽤获取连接时都会执⾏ validationQuery 配置的探活语句检测连接是否有效。虽然通过前⾯的优化步骤已经降低了0号库的压⼒使探活语句不下发到0号库执⾏。但探活语句仍会在DRDS实例上执⾏DRDS实例的压⼒并未减轻。通过上⾯对Druid数据源属性配置的说明可以了解到如果将 testOnBorrow 或 testOnReturn 打开会对系统性能有⼀定的影响因为每次都会在获取连接时多执⾏⼀次查询来检测连接是否可⽤。因此推荐使⽤如下的配置 testWhileIdletrue【如果获得的连接为“空闲连接”则会进⾏探活检测如果检测失败会将此连接从连接池移除尝试重新从连接池获取连接】 timeBetweenEvictionRunsMillis60000【Destroy线程每隔1分钟对连接池内部的空闲时间 minEvictableIdleTimeMillis的连接进⾏探活检测如果检测失败会将连接从连接池移除】 minEvictableIdleTimeMillis60000【如果连接闲置1分钟则认为此连接为“空闲连接“】 这样设置完成后只有在获取到“空闲连接”时才会进⾏探活检测⼤⼤降低了业务⾼峰时段的探活频率。同时也可通过适当缩短minEvictableIdleTimeMillis 的值兼顾由于⽹络闪断或其它原因导致的连接不可⽤的情况减少业务出错的概率在系统性能和可⽤性之间找到⼀个平衡点。 作者刘维 原文链接 本文为阿里云原创内容未经允许不得转载

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-9-27 提高组模拟赛 div2

比赛链接模拟赛 订正赛

idea 网站开发网站页面设计制作费

随着世界技术的迭代与发展,人工智能和机器学习正在超自动化领域,扮演着越来越重要的角色。2020年的冠状病毒疫情突发,整个世界都在防疫的道路上披荆斩棘。人工智能发挥了重大作用,智能测温、智能消毒、智能建设都能看到AI的影子。…

植物大战僵尸融合版下载安装教程【PC/安卓/iOS 完整攻略 + 常见问题解决】 - 详解

植物大战僵尸融合版下载安装教程【PC/安卓/iOS 完整攻略 + 常见问题解决】 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

合同范本的网站深圳戈麦斯网站开发

P3714 [BJOI2017]树的难题 求解树上长度在L到R的树链中颜色段权值和最大的链。 首先求解树上链的问题,而且限制了链的长度,那么我们需要点分治处理,然后考虑每次分治,我们可以把链分成两类,先处理同色连通块&#xf…

icp备案综合查询网站qq是哪家公司开发的软件

简介:Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 1、介绍 图 1.1 Apache ECharts 功能、运行环境 功能: ECharts&#xff…

两场div3 逆向思维

两场div3 逆向思维Posted on 2025-09-30 19:46 tttfred 阅读(0) 评论(0) 收藏 举报927div3 C 给你一个数列,和一个只含LR的操作序列s,若当前是L移除左端一个元素,若当前是R移除右端一个元素,问你每次所有元素…

详细介绍:(基于江协科技)51单片机入门:5.定时器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

part2

T1很明显需要将 \(N\) 分解成 \(N = p_i ^ {Q_i}\)再很明显的是假如我们选了若干元素则满足条件的唯一性质为 \(\min(Q_{j,k}) = 0\) 且 \(\max(Q_{j,k}) = Q_k\) 最关键的也是这步容斥,我们用总数减去T2

SuperMap iObjects .NET 11i 二次开发(十五)—— 类型转换之面转点 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站服务器空间价格网站开发顶岗周记

打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序,删除默认建立的文件。 新建RestWcf4HelpPage.svc,代码如下 using System; using System.Collections.Generic; using System.Lin…

Controversial Rounds

题目大意 给定一个字符串,只包含 0,1,?,三种字符,其中 ? 可以为 \(0\) 和 \(1\) 种的任意一个数。 对于一个 \(x(1 \le x \le n)\),要求出最多有多少个没有交集的字串,使得每个字串里只有 \(0\) 或 \(1\),并…

Transformer实战(20)——微调Transformer语言模型进行问答任务 - 实践

Transformer实战(20)——微调Transformer语言模型进行问答任务 - 实践2025-09-30 19:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: au…

题解:B4410 [GESP202509 一级] 金字塔

题解:B4410 [GESP202509 一级] 金字塔 题目传送门 题意 给定正整数 \(n\),求从 \(1\) 到 \(n\) 的立方和(\(\sum \limits _{i=1} ^{n} i^2\)) 数据规模与约定 \(1 \le n \le 50\) 算法 tag 模拟(循环结构),数学…

9.30总结

1.今天完善了程序加上了倒计时功能 2.计时功能不能实时播报,明天继续完善

pytorch基本运算-torch.normal()函数输出多维材料时,如何绘制正态分布函数图

pytorch基本运算-torch.normal()函数输出多维材料时,如何绘制正态分布函数图pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

PyTorch 神经网络工具箱全解析:从核心组件到模型实战 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做商城网站的项目背景电子上网站开发

输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s "abc" 输出:["abc","acb","bac","bca","…

音乐网站开发结语申泽seo

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’…

AT_agc035_c [AGC035C] Skolem XOR Tree

感觉每次遇到这种神秘构造都会跪下。 首先如果 \(n\) 为 \(2\) 的正整数次幂,由于第 \(n\) 位为 \(1\) 的只有一个数,显然会跪下。 然后我们通过构造证明除了这种情况都是有解的,分奇数和偶数考虑。 你考虑到一个性…