【问题标题】:Cannot set limit of MySQL open-files-limit from 1024 to 65535无法将 MySQL open-files-limit 的限制从 1024 设置为 65535
【发布时间】:2014-03-19 02:36:55
【问题描述】:

我有 mysql 版本。 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。请帮忙。

【问题讨论】:

标签: mysql linux


【解决方案1】:

如果mysql是用systemd启动的,这个设置很重要:

在文件/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

【讨论】:

  • 这应该是公认的答案。谢谢,帮我修好了。
【解决方案2】:

我只需要将此行添加到 /etc/pam.d/common-session: session required pam_limits.so

然后重启apache

【讨论】:

  • 我在这里没有看到到 apache 的连接...你的意思是说“重启 MySQL 服务器”吗?
【解决方案3】:

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

【讨论】:

  • 是的,已经这样做了。我将 open_files_limit 更改为 open-files-limit 但没有任何反应。它仍然给我 1024
  • 您是否将其更改为在 mysqld 和 mysqld_safe 部分中都使用 open-files-limit?
  • 是的,我在 mysqld 和 mysqld_safe 上都改了
【解决方案4】:

ulimit -a 作秀。 ulimit -n NUMBER 可以更改为 YOUR_NUMEBR open files

【讨论】:

    【解决方案5】:

    看看official documentation

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

    【讨论】:

      【解决方案6】:

      在 Unbuntu 14.04 上这工作

      vim /etc/mysql/my.cnf 
      
      [mysqld]
      open-files-limit=16000
      

      在此之后,只需重启mysql

      /etc/init.d/mysql restart
      

      【讨论】:

        猜你喜欢
        • 2016-05-08
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 2013-01-02
        • 1970-01-01
        相关资源
        最近更新 更多