在下面的状态中,我打开的文件计数为'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
和
max_connection = 300
是否与打开的文件和已打开的文件有关。由于opened_files值的增加,会出现性能问题吗?这是一个具有处理器的8GdRAM和500 GB硬盘服务器: Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz。它是一个专用的mysql服务器。
这里是为了命令
上限-n;
1024是伯爵
服务器经常挂起。使用一些在线工具,我已经优化了一些参数。需要知道还有什么需要优化吗?在何种情况下,打开的文件计数会减少?是否有必要将打开的文件计数限制在一定范围内。如果是的话,如何为我的服务器找到适当的限制。如果不清楚,请多问几个问题来帮助我。
发布于 2014-03-06 07:55:21
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可以保留更多开放的表句柄,并可能降低周转率。
发布于 2014-03-07 06:37:11
因此,解决方案要么是增加我的硬件(特别是内存),以便我能够增加超过4096的table_open_cache,要么优化查询。
https://stackoverflow.com/questions/22217186
复制相似问题