导读:
作者:
魏新平,
知数堂第5期MySQL实战班学员,第10期MySQL优化班学员,现任职助教
。
一想到你在关注我就忍不住有点紧张
一、官方解释
mysqld进程能使用的最大文件描述符数量,mysql实际的取值会从下面四个值当中获取最大的。
1) 10 + maxconnections + (tableopen_cache * 2)
2) max_connections * 5
3) operating system limit if positive
4) if operating system limit is Infinity:
open_files_limit value specified at startup, 5000 if none
我们接下来测试让mysql分别取上面四种值为实际的取值。
二、测试mysql版本和系统版本
操作系统版本为CentOS Linux release 7.4.1708 (Core),全新安装,没有任何配置。
mysql版本 Percona-Server-5.7.21-20-Linux.x86_64
接下来开始测试了。
没有配置open_files_limit参数(root用户登陆操作)
mysql配置文件如
[mysqld]
user=mysql
port=5721
socket=/tmp/mysql_sandbox5721.sock
basedir=/root/opt/mysql/5.7.21
datadir=/opt/msb_5_7_21/data
tmpdir=/opt/msb_5_7_21/tmp
pid-file=/opt/msb_5_7_21/data/mysql_sandbox5721.pid
bind-address=127.0.0.1
table_open_cache默认值是2000,max_connections默认值是151+1,因为还有一个extra_max_connections,ulimit -n 的值为1024。
结果如下
[root@mysqlmaster~]#ps-ef|grep mysqld
root30471009:52pts/200:00:00/bin/sh bin/mysqld_safe--defaults-file=/opt/msb_5_7_21/my.sandbox.cnf
mysql32533047009:52pts/200:00:02/root/opt/mysql/5.7.21/bin/mysqld--defaults-file=/opt/msb_5_7_21/my.sandbox.cnf--basedir=/root/opt/mysql/5.7.21--datadir=/opt/msb_5_7_21/data--plugin-dir=/root/opt/mysql/5.7.21/lib/mysql/plugin--user=mysql--log-error=/opt/msb_5_7_21/data/msandbox.err--pid-file=/opt/msb_5_7_21/data/mysql_sandbox5721.pid--socket=/tmp/mysql_sandbox5721.sock--port=5721
root105835177009:57pts/400:00:00grep--color=automysqld
[root@mysqlmaster~]#cat/proc/3253/limits|grep files
Maxopen files