max open files mysql_MySQL性能优化之open_files_limit,table_open_cache和max_connections配置关系...

MySQL的变量open_files_limit,table_open_cache和max_connections是相互关联的。如果对有些变量进

行了设置,有的变量没有设置,mysql会根据一定的计算公式进行计算得出其他的,当然有些时候会触发mysql的一些警告来。

本文探讨的均基于Linux系统

首先,mysql会基于 max_connections 和 table_open_cache 的值计算最低需要的文件打开描述符的数量。至于其他变量,如果没有再my.cnf中配置或者命令行中指定,它将使用默认值。

/* MyISAM requires two file handles per table. */

wanted_files= 10+max_connections+table_cache_size*2;

其次,它会基于 open_files_limit 检查实际能分配多少数值。这里它可分配的最大数值为 max_connections 5倍,然后三者取最大值。

max_open_files=max(max(wanted_files,max_connections*5),open_files_limit);

files=my_set_max_open_files(max_open_files);

接下来,它获取 max_open_files 和服务器(操作系统/平台)支持的最大描述符限制数的最低值

limit = min(max_file_limit, OS_FILE_LIMIT);

下面的比较有趣:

在设置setrlimit 之前,mysql获取当前的limit值,如果当前的 limit 是 unlimited,它将尝试设置比之前获得的limit值更小。

如果当前limit不是 unlimite

你可能感兴趣的:(max,open,files,mysql)