记一MySQL连接速度慢的问题

news2024/12/22 10:16:52

某一个程序启动速度超级慢,查看日志得知是是在Init DruidDataSource ~ {dataSource-1} inited 这一段耗时最长,这一段是Druid 数据源初始化,进行连接的创建等,使用mysql命令行连接发现连接超级慢,可见是在创建连接的时候导致慢。

原因:

  • 性能开销:由于需要进行 DNS 解析(以及反向解析),连接过程会有一定的延迟,尤其是在 DNS 配置不当或 DNS 服务器响应较慢的情况下。

  • DNS 不可用时的影响:如果 DNS 服务器不可用或配置有问题,连接 MySQL 服务器时可能会变得非常缓慢,甚至无法连接。

解决方案:

启用 skip-name-resolve 会跳过反向 DNS 解析,这样 MySQL 只会基于 IP 地址来进行连接和身份验证,从而加速连接过程并避免 DNS 配置或延迟导致的问题。

[mysqld]
skip-name-resolve

同时,请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用 ip地址了,因为这是禁止了域名解析的结果。

SELECT user, host, authentication_string FROM mysql.user;

MySQL连接过程

客户端(client): 192.168.1.100

服务端:

DNS 解析

主机名解析:当客户端通过主机名(例如 mysql -h example.com -u user -p)连接 MySQL 服务器时,MySQL 会首先通过 DNS(域名系统)解析该主机名为 IP 地址。这个过程涉及向 DNS 服务器发送请求并接收响应。

DNS 查询:客户端向 DNS 服务器查询 example.com(或者你指定的任何主机名),DNS 服务器会返回该主机名的 IP 地址(例如 192.168.1.100)。如果 DNS 解析失败(比如域名不存在,或者 DNS 服务器不可用),连接过程将失败。

如果直接使用IP进行连接,则这一步跳过

建立 TCP 连接

连接过程:一旦 DNS 解析完成,客户端使用解析到的 IP 地址和指定的端口号(MySQL 默认端口是 3306)建立 TCP 连接。

握手过程:在连接建立后,MySQL 服务器和客户端之间会进行 TCP 握手。这是一个标准的网络协议过程,确保双方的连接是可靠的。

发送连接请求

客户端向 MySQL 服务器发送连接请求。这个请求包括客户端的用户名、密码、目标数据库、字符集等信息。

主机名反向解析

根据IP解析出主机名就是反向解析

1、MySQL 服务器收到连接请求,客户端的 IP 地址是 192.168.1.100

2、MySQL 服务器将该 IP 地址转换为反向 DNS 查询格式:100.1.168.192.in-addr.arpa

3、MySQL 服务器向 DNS 服务器发送查询请求,查询 100.1.168.192.in-addr.arpa 是否存在反向解析记录。

4、DNS 服务器返回 client作为主机名。

5、MySQL 服务器使用 client作为主机名进行身份验证,验证是否允许来自该主机的连接。

如果反向解析出来的主机名在root用户允许访问的主机内,那么这个连接就被授权,否则MySQL 将拒绝该客户端的连接请求。

身份验证

MySQL 服务器验证客户端提交的用户名和密码。如果验证成功,服务器会根据客户端的请求返回数据库的相关信息。

建立会话

如果身份验证成功,MySQL 会为该客户端创建一个会话并允许其执行查询或操作。

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

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

相关文章

【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)

强化学习(Reinforcement Learning, RL)是一种基于试错的方法,旨在通过智能体与环境的交互,学习能够最大化累积奖励的策略。以下是强化学习的详细介绍。 强化学习的核心概念 智能体(Agent) 执行动作并与环境…

博世智驾新动力:Apache DolphinScheduler如何征服数据处理挑战

视频及PPT等相关资料:点击查看 讲师介绍 陶超权,博世智驾(中国)后端工程师,负责数据处理和数据调度方面工作,在智能驾驶数据处理领域具有丰富的实践经验。在2024年12月Apache DolphinScheduler社区线上交流…

令牌(token)+加密(加盐)

目录 一,令牌技术 1,不使用session的原因: 2,有两种解决方案: (1)服务器层面的 (2)客户端层面的(JWT令牌) 生成签名: 生成jwt令牌: 验证令牌是否合法: (3)令牌实际运用 二,加密加盐: 进行加密: 进行验证: 一,令牌技术 1,不使用session的原因: 登录页面,用户会将密…

Flask入门:打造简易投票系统

目录 准备工作 创建项目结构 编写HTML模板 编写Flask应用 代码解读 进一步优化 结语 Flask,这个轻量级的Python Web框架,因其简洁和易用性,成为很多开发者入门Web开发的首选。今天,我们就用Flask来做一个简单的投票系统,让你快速上手Web开发,同时理解Flask的核心概…

阿里巴巴前端面试经验

阿里巴巴面经(新零售事业群-CBU技术部) 笔试 /*** 1. 查找落单的数字* 描述:给定一个非空的数字数组,数组有且只有一个非重复项,实现一个方法获取落单项* 示例:* getSingleNumber([1, 2, 1, 2, 0]); // 0* getSingle…

指针的深入讲解

本章重点: 字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数 我们在指针的初阶的时候主要讲了: 1.指针就是变量,用来存放地址,地址唯一标识一块内存空间 2.指针的大小是固定4个…

网络多层的协议详述

网络层 1)地址管理:制定一系列的规则,通过地址,在网络上描述出一个设备的位置 2)路由选择:网络环境比较复杂,从一个节点到另一个节点,存在很多条不同的路径,需要规划出…

Zabbix6.0升级为6.4

为了体验一些新的功能,比如 Webhook 和问题抑制等,升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档,确认组件要求的版本,否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

UML复习题

用例与用户的4种关系对象图和类图有什么关系:对象图是类图某一时刻的快照组件图,体现的是静态图部署图,涉及到硬件的结点,实线链接 以上都是静态图 时序图,消息先后协作图 ,谁和谁交互,对象之间的交互某一…

【MFC】多工具栏如何保存状态

MFC中的工具栏本来只有一个,如果想增加几个工具栏是比较简单,但现在一个重要的问题是,状态无法保存,导致每次打开,工具栏就会出现问题,要么偏移位置要么显示不出。 经过研究,发现是MFC框架中的…

Buck开关电源闭环控制的仿真研究15V/5V[Matlab/simulink源码+Word文档]

课题设计要求 ⑴输入直流电压(VIN):15V ⑵输出电压(VO):5.0V ⑶负载电阻:R2欧 ⑷输出电压纹波峰-峰值 Vpp≤50mV ,电感电流脉动:输出电流的10% ⑸开关频率(fs):100kHz ⑹BUCK主电路二极管的通态压降VD0.5V…

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

Flink2.0未来趋势中需要注意的一些问题

手机打字,篇幅不长,主要讲一下FFA中关于Flink2.0的未来趋势,直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲,很精彩,官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读:随着数据量的快速增长,传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战,Spark SQL 引入了多种优化技术,以提高查询效率,降低计算开销。本文从表达式层面探讨了 Spark…

在Tomcat中部署应用时,如何通过域名访问而不加端口号

--江上往来人,但爱鲈鱼美。 --君看一叶舟,出没风波里。 在Tomcat中部署应用时,如果你希望通过域名访问而不加端口号(默认HTTP端口80或HTTPS端口443),你通常需要在前端使用一个反向代理服务器(如…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

Leetcode分隔链表

java 实现 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class …

maui开发成生安卓apk,运行提示该应用与此设备的CPU不兼容

在生成.NET MAUI安卓应用时遇到“该应用与此设备的CPU不兼容”的问题,确保你的.NET MAUI应用支持的Android目标框架与设备CPU架构相匹配。例如,如果你的应用是为ARM64架构编译的,而你的设备是x86架构,就会出现不兼容的问题。 一、…

在 Unity 6 中使用APV为您的世界创建全局照明的新方法(一)

Unity 6 中推出的新照明功能让您能够更快速、更高效的完成对烘焙场景的照明工作,在本文中我们将与大家详细分享在 Unity 6 中应用自适应探针卷创建快速全局光照的更多细节与具体应用方法。由于内容比较丰富,我们将把内容分为三篇文章,以便大家…

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸,这样可以直接将低分辨率图片输入模型中,解决了输入尺度问题。改变特征维数,使用更小的卷积核和使用更多的映射层。卷积核更小,加入了更多的激活层。共享其中的映射层&…