我遇到了一种奇怪的行为,我想更好地理解正在发生的事情。我在my.cnf中设置了该部分中的参数open_files_limit = 32000。我重新启动了MariaDB。我有两个进程mysqld_safe和mysql。
ps的结果:
root 10439 1 0 11:27 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe
--datadir=/var/lib/mysql/data
--pid-file=/var/lib/mysql/data/rcentdb02.pid
mysql 10880 10439 0 11:27 pts/1 00:01:14 /usr/sbin/mysqld --basedir=/usr
--datadir=/var/lib/mysql/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql
--log-error=/var/lib mysql/data/rcentdb02.err --open-files-limit=32000
--pid-file=/var/lib/mysql/data/rcentdb02.pid --socket=/var/lib/mysql/mysql.sock
--port=3306cat /proc/$(pgrep mysqld_safe$)/limits的结果
Max open files 32000 32000 filescat /proc/$(pgrep mysqld$)/limits \ grep "Max open“的结果:
Max open files 90162 90162 files我的问题是:为什么mysql_safe对open_files_limit有很好的参数,而不是mysqld过程?
谢谢。
显示像'open_files_limit‘这样的全局变量的结果是90162。我试图从open_files_limit中删除my.cnf,但它不起作用。
我总是有这个值90162,似乎没有任何设置.
有什么想法吗?
我将my.cnf设置为:
[mysqld]
open_files_limit = 32000
[mysqld_safe]
open_files_limit = 32000我停止mysql并启动mysql。显示全局变量的结果,如‘open_files_ LIKE’;=> 90162
我将open_files_limit的值更改为100000,现在查询的结果显示像'open_files_limit‘这样的全局变量是100000。所以现在我的问题是:我知道mysql可以自动调整这个参数,但是他如何选择一个比系统限制更高的值(90162)?
有根帐户:
ulimit -Sn => 1024
ulimit -Hn => 4096使用mysql帐户(我将nologin改为bash进行测试):
ulimit -Sn => 32000
ulimit -Hn => 64000发布于 2018-02-27 15:53:29
您可能必须登录到MariaDB并运行
SHOW GLOBAL VARIABLES LIKE 'open_files_limit';看看这是32000还是90162。我的目标可能是限制它。
完全有可能打开_文件_限制正在进行自动调整。文档上写着Default:5000, with possible adjustment和Maximum:platform dependent。
下面是mysqld_safe和mysqld的交互方式:
mysqld_safe将把值传递给mysqldmysqld可以覆盖从mysqld_safe传递的值根据MySQL关于mysqld_safe的文档:
mysqld_safe的许多选项与mysqld的选项相同。见5.1.4节,“服务器命令选项”。mysqld_safe未知的选项如果在命令行中指定,则传递给mysqld,但如果在选项文件的组中指定,则忽略它们。见4.2.6节,“使用选项文件”。
您可能需要做的是从open_files_limit中删除my.cnf,让mysqld_safe将它所知道的值分配给mysqld。
然后,重新启动mysqld。
您可能需要在[mysqld_safe]中添加my.cnf头并放置open_files_limit=32000,如下所示:
[mysqld_safe]
open_files_limit=32000但是,不要重新启动mysqld。这可能无法正确终止mysqld_safe,因为它包含一个不确定的循环,用于检查mysqld终止时的返回代码。有一个返回值可以让mysqld_safe知道如何重新启动mysqld。这意味着mysqld_safe在处理mysqld重新启动时不会终止。
最好分两步重新启动。
service mysql stop && service mysql start执行service mysql stop将终止mysqld,然后退出mysqld_safe中的不定循环,终止mysqld_safe。然后,启动service mysql start将启动一个新的mysqld_safe进程。试试看让我们知道。
如果不能编辑my.cnf,则在命令行上指定选项:
service mysql stop && service mysql start --open-files-limit=32000https://dba.stackexchange.com/questions/198920
复制相似问题