第 54 期:MySQL Too many open files 报错

23天前 26.0k 0

问题

MySQL 报错:Too many open files 怎么处理?

实验

1. 将问题丢给 ChatDBA

第 54 期:MySQL Too many open files 报错-1

我们先把这个问题丢给 ChatDBA,让他看下具体出了什么问题。

第 54 期:MySQL Too many open files 报错-2第 54 期:MySQL Too many open files 报错-3

>

左侧为流程分析画布,展示 ChatDBA 对此问题的排查逻辑;右侧为互动区域

2. ChatDBA 协助问题排查

第 54 期:MySQL Too many open files 报错-4

我们将问题输入进 ChatDBA 后,系统反馈先进行信息的收集。

这里 ChatDBA 要求输入一些系统的基本情况,因为该报错很有可能是由于文件描述符数量引起的,要求输入的信息分别为:

  • open_files_limit
  • ulimit -n
  • Innodb open files

open_files_limit

第 54 期:MySQL Too many open files 报错-5

ulimit -n

第 54 期:MySQL Too many open files 报错-6

innodb_open_files

第 54 期:MySQL Too many open files 报错-7

这时,ChatDBA 发现这些配置基本上满足需求,所以要求输入文件打开的数量、临时表情况等,所以接下来就将当时系统的监控图片上传到 ChatDBA。

第 54 期:MySQL Too many open files 报错-8监控图片第 54 期:MySQL Too many open files 报错-9

首先,ChatDBA 准确的识别出了监控图像的内容,同时也猜测虽然参数配置的合理,但是临时文件过多是导致该问题的主要原因,通过查看监控也发现,确实临时文件在报错期间增长很快。

第 54 期:MySQL Too many open files 报错-10

ChatDBA 接下来推测是慢查询导致的临时文件过多,所以要求我们输入对应的慢查语句。

第 54 期:MySQL Too many open files 报错-11

接下来我们将对应的 SQL 语句给到 ChatDBA,这时他根据经验推测了一个原因是由于该语句未充分利用到索引,所以让我们给出对应的执行计划。

3. ChatDBA 给出解决方案

第 54 期:MySQL Too many open files 报错-12

我们将 EXPLAIN 的结果截图给到 ChatDBA 后,发现其根据截图内容推测出了问题关键,并且给到了对应的解决方案。

第 54 期:MySQL Too many open files 报错-13

4. 实验总结

这个案例比较有趣,一般情况下 Too many open files
报错和文件描述符配置不当有关。但是该案例中,是由于数据表没有有效的利用到索引导致,后续观察表结构发现,JOIN 关联条件中等号左右两个字段的数据类型不同,一个是 VARCHAR 类型一个是 INT 类型,所以导致该条 SQL 语句没法用到索引,进而创建了非常多的临时文件,所以导致了报错。

问问 ChatGPT-4o

我们也将相同的问题送给了 ChatGPT-4o,让我们看看效果如何。

第 54 期:MySQL Too many open files 报错-14

我们也将相同的问题输入到了 ChatGPT 中,发现其在第一步也发现是文件描述符的问题,但是当我们给到其具体参数后后续的操作步骤没有办法收集或定位到更多有效的信息。

相关文章

在一台虚拟机上搭建MGR 9.0集群
众所周知的原因安装PMM2
唯一上榜!OceanBase入选 2023“科创中国”先导技术榜!
MySQL 删除数据表
利用 MySQL 克隆插件搭建主从
MySQL索引前缀长度超限怎么办?这种方法帮你搞定

发布评论