当前位置:网站首页>【MySQL 15】Could not increase number of max_open_files to more than 10000 (request: 65535)

【MySQL 15】Could not increase number of max_open_files to more than 10000 (request: 65535)

2022-07-06 02:02:00 Rusty well began

1、阅读8.4.3.1 MySQL 如何打开和关闭表

https://dev.mysql.com/doc/refman/5.6/en/table-cache.html

其中指出: “table_open_cache 和 max_connections 系统变量会影响服务器保持打开的最大文件数。如果您增加其中一个或两个值,您可能会遇到操作系统对每个进程打开文件描述符的数量施加的限制。许多操作系统允许您增加打开文件的限制,尽管方法因系统而异。请查阅您的操作系统文档,以确定是否可以增加限制以及如何增加限制。”
在这里插入图片描述

2、阅读 MySQL 的open_files_limit 文档,

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_open_files_limit

其中指出:“操作系统允许 mysqld 打开的文件数。此变量在运行时的值是系统允许的实际值,可能与您在服务器启动时指定的值不同。在 MySQL 无法更改打开文件数的系统上,该值为 0。…有效的 open_files_limit 值基于系统启动时指定的值(如果有)以及 max_connections 和 table_open_cache的值. 服务器尝试使用这三个值中的最大值来获取文件描述符的数量。如果无法获取那么多描述符,服务器会尝试获取系统允许的尽可能多的描述符。”
在这里插入图片描述

3、 检查 Opened_tables状态变量,该变量指示自服务器启动以来的开表操作数:

mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 43618 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> 

4、解决方案

如果 MySQL 以下警告开头:

Could not increase number of max_open_files to more than 10000 (request: 65535)

这意味着某个地方正在达到极限。让我们通过编辑任何配置的限制来解决这个问题。查看以下文件:

linux-2dk8:/ # find -name mysql.service
./etc/systemd/system/multi-user.target.wants/mysql.service
find: File system loop detected; ‘./.snapshots/1/snapshot’ is part of the same file system loop as ‘.’.
./usr/lib/systemd/system/mysql.service
./sys/fs/cgroup/pids/system.slice/mysql.service
./sys/fs/cgroup/devices/system.slice/mysql.service
./sys/fs/cgroup/systemd/system.slice/mysql.service
linux-2dk8:/ # cat /usr/lib/systemd/system/mysql.service

在mysql.service文件中查找配置

linux-2dk8:/ # cat /usr/lib/systemd/system/mysql.service
# Sets open_files_limit
LimitNOFILE = 10000

请不要使用无穷大作为值;它默认为 65535。因此,如果您看到值 infinity,请将其替换为所需的限制。

修改之后的为:

# Sets open_files_limit
LimitNOFILE = 65535

完成此操作后,您现在应该重新加载系统守护程序并重新启动 MySQL 服务:

systemctl daemon-reload
systemctl restart mysql

通过 MySQL 命令行检查新限制。您可以使用以下查询,确保设置了新限制:

mysql> SHOW VARIABLES LIKE 'open_files_limit';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+
1 row in set (0.01 sec)
原网站

版权声明
本文为[Rusty well began]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_22938603/article/details/125599852