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

本文深入探讨了MySQL中的open_files_limit、table_open_cache和max_connections之间的配置关系。在Linux系统下,MySQL会根据max_connections和table_open_cache计算所需的最小文件打开描述符,并在open_files_limit、max_connections的5倍以及系统限制之间取最大值。如果open_files_limit未设置,MySQL会根据系统限制调整max_connections和table_open_cache。建议不单独设置open_files_limit,而是让MySQL自动计算需求,以避免连接失败和资源耗尽。对于包含线程池的MariaDB和Percona Server,还需考虑extra_max_connections的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,它将尝试设置比之前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值