修改 MySQL 可打开文件数
可打开文件数限制#
如果 MySQL 可打开的文件数值设置的过小,会出现 “too many open files” 的错误,这意味着一个进程已经打开了太多的文件(文件描述符),无法再打开新的文件了。
查看 MySQL 可打开文件数配置值
1 | mysql> select @@open_files_limit; |
查看某一个进程(MySQL进程)已经打开的文件数
1 | ll /proc/pid/fd|wc -l |
修改 MySQL open_files_limit 配置的值的两种方法:#
1.通过修改 MySQL 系统变量 max_connections 、 table_open_cache 或者 修改系统可打开最大文件描述符的数量 来修改 open_files_limit 的值#
MySQL 官方文档对这个字段的描述,open_files_limit 实际的取值会从下面四个值当中获取最大的。
- 10 + max_connections + (table_open_cache * 2)
- max_connections * 5
- MySQL 8.0.19 and higher: The operating system limit.
- Prior to MySQL 8.0.19:
- The operating system limit if that limit is positive but not Infinity.
- If the operating system limit is Infinity: open_files_limit value if specified at startup, 5000 if not.
通过修改 MySQL 系统变量 max_connections 、 table_open_cache 或者 修改系统可打开最大文件描述符的数量 来修改 open_files_limit 的值。
2. 修改 MySQL 的系统服务文件#
通过查看 MySQL 状态命令 service mysql status
,查看MySQL的系统服务文件(MySQL systemd service file)。
在 mysql.service 文件的同级目录创建目录 mysql.service.d,并在目录里创建文件 limits.conf ,文件内容如下:
1 | /lib/systemd/system/mysql.service.d/limits.conf |
修改完后继续执行以下两条命令:
1 | systemctl daemon-reload # 重新加载配置文件 |