我在 Ubuntu 14.04 上有一个 LEMP 堆栈,其中包含 MariaDB。Mysql 是我服务器的巨大瓶颈。我尝试了所有我知道的方法来提高 mysql 的打开文件限制。我已将其添加open-files-limit = 2097152
到 my.cnf。我已将以下内容添加到 limits.conf:
* soft nofile 2097152
* hard nofile 2097152
* soft nproc 2097152
* hard nproc 2097152
mysql soft nofile 2097152
mysql hard nofile 2097152
mysql soft nproc 2097152
mysql hard nproc 2097152
我已经添加了session required pam_limits.so
/etc/pam.d/common-session* 和 /etc/pam.d/sudo 以及其他几个文件。我尝试在重启后重新启动 mysql - 没有变化。我还检查了/etc/apparmor.d/usr.sbin.mysqld
它是否参与其中,但文件是空的。经过所有这些,我仍然得到以下内容:
# ulimit -Sa
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256538
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 2097152
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
当我跑步时# mysqld --verbose
我得到了这个:
150501 0:19:35 [Warning] Could not increase number of max_open_files to more than 1024
有谁知道是什么阻碍了这一改变吗?
答案1
不幸的是,这里没有直接的答案。/etc/security/limits.conf 中的内容只能由 PAM 读取,在登录期间读取,而不是在启动期间读取。
因此,如果您希望 mysqld 改变其 ulimits,则必须摆弄 init 脚本。