记一MySQL连接速度慢的问题

ops/2024/12/21 1:53: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.ppmy.cn/ops/143630.html

相关文章

人工智能增强的音频和聊天协作服务

论文标题:AI-enabled Audio and Chat Collaboration Services 中文标题:人工智能增强的音频和聊天协作服务 作者信息: Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

在 Ubuntu 上部署 Terraform 管理平台:实现云基础设施的集中管理

简介 Terraform 是一款开源基础架构自动化工具,可让您通过命令行界面部署和管理数百台服务器。使用 Terraform,你可以通过在一个人类可读的文件中定义配置来构建、更改和管理你的基础架构。它支持许多云提供商,如 AWS、Azure、GCP 和阿里巴巴…

云计算HCIP-OpenStack04

书接上回: 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务,最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…

“TA”说|表数据备份还原:SQLark 百灵连接助力项目部署验收

💬 南飞雁|应用开发工程师 有些重要项目的部署验收,会在生产环境完成,验收完成后,又需要把这部分数据清空。这时就需要对数据表进行备份和还原,虽然可以通过命令直接实现,但是有一些操作门槛&am…

RPC远程服务调用详解和gRPC简介

RPC (Remote Procedure Call)是远程过程调用,比如说现在有两台服务器A, B,一个在A服务器上的应用想要调用B服务器上的应用提供的某个,由于不在两个方法不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达…

力扣第109题:将排序链表转换为二叉搜索树

力扣第109题:将排序链表转换为二叉搜索树 题目描述 给定一个单链表,其中的元素已经按升序排列,要求将其转换为一个高度平衡的二叉搜索树。 高度平衡二叉搜索树:一个二叉搜索树,其中每个节点的左右子树的高度差的绝对…

34.在 Vue 3 中使用 OpenLayers 上传 GeoJSON 文件并显示地图数据

目录 1. 什么是 GeoJSON 文件 GeoJSON 的基本结构 GeoJSON 常见几何类型 2. 为什么选择 OpenLayers 与 GeoJSON OpenLayers 的优势 3. 在 Vue 3 中集成 OpenLayers 安装 OpenLayers 创建 Vue 组件并初始化地图 4. 上传并解析 GeoJSON 文件 5. 样式定制与地图展示 6. …

数据库中常见的聚合函数

目录 一、聚合函数是什么 二、常见的聚合函数 1、SUM() 2、AVG() 3、MAX() 4、MIN() 5、COUNT() 6、GROUP_CONCAT() / STRING_AGG() 7、STDDEV() / STDDEV_SAMP() 8、VAR_POP() / VARIANCE() 三、聚合函数的作用 1、数据汇总: 2、统计分析: 3、数据分组: 四、聚合…