在MySQL 5.5中更改打开文件限制


9

我在使用open-files-limit参数在Ubuntu 12.04上运行的mysql 5.5遇到问题。

我最近注意到由于1024限制而引起的一些问题,实际上主系统限制设置为1024,所以我用以下内容修改了/etc/security/limits.conf:

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

之后,我检查了root甚至是mysql用户的ulimit值,都返回了新值:32000,因此我假设更改已经完成。

我还更改了my.cnf文件的值,将open-files-limit设置为24000,如下所示:

open-files-limit    = 24000

现在出现了一个奇怪的部分,当我重新启动mysql服务并检查open_files_limit变量时,它返回它仍然设置为1024,所以我遇到的问题与以前(显然)尝试使用open-files-limit相同而是在my.cnf配置文件中使用open_files_limit,结果相同,但是,如果我重写了service命令以启动服务并仅使用mysqld(无附加参数)启动,则服务会启动,并且当我检查参数时它会返回32000 ...我不知道它从哪里获取该值,因为它不是在my.cnf上设置的,而且至少不是我自己没有通过命令行给出的。

关于为什么它无法正常工作以及如何以正常方式解决问题的任何想法(通过服务发布...)?

Answers:


9

我终于找到了问题,看来新贵没有使用在/etc/security/limits.conf中定义的参数,因此当我通过service命令启动mysql(因此在新贵情况下)时,它会覆盖那些定义的限制并使用默认值1024。

解决方案是修改定义新贵服务的mysql.conf文件,该文件位于/etc/init/mysql.conf中,并在pre-start块之前添加以下几行:

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

第一个值定义了软限制,另一个值定义了硬限制,一旦添加了这些行,该服务就会应用my.conf文件中定义的值按预期工作。

此限制应适用于在/ etc / init中定义的每个新贵服务,因此,如果任何服务在打开文件限制方面存在相同的问题,则此解决方案也应适用。


1
那里的工作很好!
pkhamre 2012年

这确实成功了……这是一个痛苦的人
Chad Scira 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.