无法将MySQL open-files-limit的限制设置为1024到65535

时间:2014-03-19 02:36:55

标签: mysql linux

我有mysql ver。 5.1.49-3,我正在使用linux debian。我试图将open-files-limit设置为65535.所以我在/ etc / mysql /

中编辑了te my.cnf
[mysqld]
open_files_limit = 65535
[mysqld_safe]
open_files_limit = 65535

然后在/etc/security/limit.conf

*   soft    nofile  100000
*   hard    nofile  200000

重新启动mysql服务后,我在linux中运行此命令

ps -ef|grep mysql

我得到了65535.当我以root身份登录mysql并获取open-files-limit的值

show global variables like "%open_files_limit%";

我得到1024.请帮忙。

6 个答案:

答案 0 :(得分:13)

如果使用systemd启动mysql,则此设置很重要:

在文件/lib/systemd/system/mysql.service中,您必须在最后的[Service]部分添加以下两行:

LimitNOFILE = infinity
LimitMEMLOCK = infinity

重新启动systemctl和mysql之后:

systemctl daemon-reload
/etc/init.d/mysql restart

要检查配置是否有效,您可以从运行的mysql进程中获取参数,如下所示:

cat /proc/$(pgrep mysqld$)/limits | grep files

答案 1 :(得分:2)

我需要的是将这一行添加到/etc/pam.d/common-session: session required pam_limits.so

然后重启apache

答案 2 :(得分:1)

旧版MySQL的问题要求您在my.cnf中使用open-files-limit(破折号而不是下划线)。见http://bugs.mysql.com/bug.php?id=40368

答案 3 :(得分:0)

为展示做ulimit -aulimit -n NUMBER可以更改为YOUR_NUMEBR open files

答案 4 :(得分:0)

查看official documentation

  

“此变量在运行时的值是系统允许的实际值,可能与您在服务器启动时指定的值不同。”

答案 5 :(得分:0)

在Unbuntu 14.04上奏效了

import re

Test_Str = "2014, 2016, Start ss 233, 2015, 2017, 2019 other stuff 3141"
Test_RE1 = r'(Start[^\d]{1,6}?)(?:(\d{1,4},?\s*)+)'
Test_RE2 = r'(Start[^\d]{1,6}?)(?:(\d{1,4},?\s*)*)'

match1 = re.search(Test_RE1, Test_Str)
print match1.group(0) # Start ss 233, 2015, 2017, 2019 
# This is the desired match

match2 = re.search(Test_RE2, Test_Str)
print match2.group(0) # Start 
# This fails to match any repetitions of the 'digit group'

在此之后,只需重新启动mysql

vim /etc/mysql/my.cnf 

[mysqld]
open-files-limit=16000