最近接手维护一台mysql服务器,系统是ubuntu 16.04,mysql版本5.7,安装方式是apt检查mysql配置参数时发现open_files_limit是1024,有点小,需要调大一点

首先show global status like 'open_files_limit' 查看目前打开了多少文件,一看是900多,很明显1024太小,需要调大,于是修改/etc/my.cnf 将open_files_limit 设置为65535,然后/etc/init.d/mysql restart重启mysql。

重启完登录mysql用show variables查看发现配置没生效,还是1024。查看mysq日志,原来系统文件描述打开限制是1024,小于65535,mysql认为配置项不合理,所以用了默认值1024,于是修改/etc/secruity/limit.conf,添加以下两行

*           soft   nofile         65535
*           hard   nofile        65535

修改完退出重新登录系统,使修改生效,然后重启mysql。心想这下应该生效了,然而并没有!一看还是1024,查看mysql日志,之前的提示系统文件描述符限制的信息已经没事有了,说明系统的问题已经解决了,难道还有其他限制,goole了一下,原来还要改一个地方

修改/lib/systemd/system/mysql.service,添加以下两行

LimitNOFILE=65535
LimitMEMLOCK=65535

然后执行以下命令重启mysql

#systemctl daemon-reload
#systemctl restart  mysqld.service

问题解决,open_files_limit变成65536了

总结:ubuntu系统下,要这个配置项生效有3个条件:

1.my.cnf要修改open_files_limit
2.系统open_files_limit的值要大于等于mysql的open_files_limit值
3./lib/systemd/system/mysql.service的open_files_limit值要设置的与my.cnf一致