mysql 无法将max_open_files的数量增加到超过4096(请求:4214)

bqf10yzr  于 2023-06-04  发布在  Mysql
关注(0)|答案(6)|浏览(366)

我在Linux Debian 9上有MariaDB + Nginx(stretch)。在安装MariaDB并尝试启动它之后,我得到了一个错误:[Warning] Could not increase number of max_open_files to more than 4096 (request: 4214)。所以我在谷歌上搜索了一下,它告诉我应该在/etc/systemd/system/mysql.service中将LimiNOFILE改为10000。我这样做了,做了金刚重装,它完全没有做任何事情。我仍然收到相同的错误消息。我尝试重新安装MariaDB,但也没有帮助。我还在文件的最后添加了LimitMEMLOCK=10000,这并没有改变任何东西。
完整追溯:
Link
先谢谢你了

zlhcx6iw

zlhcx6iw1#

我通过重新安装MariaDB解决了这个问题
$ sudo apt-get purge mariadb-server
你应该检查它是否还在系统上:
$ sudo dpkg -l| grep mariadb
如果是,请执行以下操作:
$ sudo apt-get purge mariadb-common
但在此之前,我通过htop删除了与MariaDB/MySQL有关的所有内容。然后安装它的标准程序:
$ sudo apt更新
$ sudo apt install mariadb-server
$ sudo mysql_secure_installation

vfhzx4xs

vfhzx4xs2#

这可能是因为SystemD配置文件为服务设置的限制。如果是这种情况,您可以通过编辑/usr/lib/systemd/system/mariadb.service并将其增加到请求的值来解决它:

LimitNOFILE=4214

...或任何你想要的值:

LimitNOFILE=100000

如果操作系统或初始化系统对用户或服务有较低的限制,open_files_limit 将不会有任何影响。

z4bn682m

z4bn682m3#

仅在服务级别进行更改是不够的
您还必须编辑
/etc/mysql/conf.d/limits.cnf
里面有这些线条

[mysqld]
open_files_limit = 10000

然后
服务mysql重启
您可以在limits.conf和mysql.service中将该数字增加到1000000

du7egjpx

du7egjpx4#

如果操作系统限制打开文件的数量,则像openfile_files_limits这样的服务器设置将不起作用,并且将始终导致错误。由于服务器默认以mysql用户身份运行,因此它不能更改系统值(服务器中也没有更改这些限制的代码)。
Linux系统上打开文件的默认值为1024,可以通过以下方式确定

$> ulimit -n
1024

因此,如果您拥有root权限或您在sudo'ers列表中,只需增加此值。man ulimit将为您提供更多信息。

lx0bsm1f

lx0bsm1f5#

只是注意到对我来说的解决方案是修复tmpdir变量中的错误配置。它被设置为/mysqltmp(可能是因为/tmp非常小)。我用以下方法修复了它:

mkdir -p /mysqltmp
chown mysql.mysql /mysqltmp

我猜设置tmpdir到一个不存在或有错误权限的目录会触发此消息。

u4vypkhs

u4vypkhs6#

在我的例子中,我在MySQL配置文件中有一个语法错误:my.cnf
删 debugging 误行后,我成功启动了MySQL服务。

相关问题