siv*_*iva 5 mysql performance server-configuration mysqladministrator mysqladmin
在以下状态中,我打开的文件数为“95349”。这个值正在迅速增加。
mysql> show global status like 'open_%';
Open_files = 721
Open_streams = 0
Open_table_definitions = 706
Open_tables = 741
Opened_files = 95349
Opened_table_definitions = 701
Opened_tables = 2851
也看到这个。
mysql>show variables like '%open%';
have_openssl = 禁用
innodb_open_files = 300
open_files_limit = 8502
table_open_cache = 4096
和
最大连接 = 300
打开的文件和打开的文件有什么关系。由于增加了opened_files 值,会不会有任何性能问题。这是一个 8 GD RAM 和 500 GB 硬盘的服务器,处理器:Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz。它是一个专用的 mysql 服务器。
这里是命令
ulimit -n;
1024 是计数
服务器经常挂。使用一些在线工具,我已经优化了一些参数。需要知道还有什么应该优化?在什么情况下打开的文件数会减少?是否有必要将打开的文件数限制在某个范围内。如果是这样,如何为我的服务器找到合适的限制。如果不清楚某些地方,请通过提出更多问题来帮助我。
Opened_files 是自上次重新启动 mysqld 以来打开表的次数的计数器(有关自上次重新启动以来的秒数,请参阅状态变量 Uptime)。
Open_files 不是计数器;它是当前打开文件的数量。
如果您的 Opened_files 计数器快速增加,您也许可以通过增加table_open_cache
.
有关此变量的性能影响的一些提示(以及关于将其设置得太高的一些注意事项),请参阅:
回复您的评论:
您误解了计数器的用途。它总是增加。它计算自上次重新启动 mysqld 以来发生特定操作的次数。在本例中,打开表的文件。
计数器具有高值不一定是问题。这可能只是意味着您的 mysqld 已经运行了很多天或几周而没有重新启动。因此,您必须将该数字与正常运行时间(即 MySQL 状态变量Uptime
,而不是 Linux 正常运行时间)进行比较。
更有意义的是计数器的增长率,即在给定的时间间隔内它增长的速度。这可能表明您正在快速重新打开桌子。
通常,MySQL 不必重新打开表,因为它为每个表保留一个打开的表句柄。但它的数量是有限的。这就是 table_open_cache 的用途。在您的情况下,您的 MySQL 实例可以“记住”它已经一次打开最多 4096 个表。如果您需要打开另一个表,它将关闭其中一个文件描述符并打开您请求的表。
因此,如果您有数千个表(或表分区)并且您快速访问各种表,则您可能会在该表打开缓存中看到大量周转。这可以通过计数器Opened_tables 快速增加来表明。
因此,增大 table_open_cache 的大小意味着 MySQL 可以保留更多打开的表句柄,并可能降低周转率。