内核限制“打开文件限制”和mysql“Opened_files”有关吗?

时间:2017-07-31 08:34:20

标签: mysql performance load mariadb

我们正在托管我们的快递api应用程序,该应用程序具有大量数据插入和数据读取。我们正在努力为我们的ubuntu 16服务器实现55cpu和128GB RAM以及1tb SSD磁盘的最大吞吐量。以下是“innobdb状态结果”

29 queries inside InnoDB, 517 queries in queue
32 read views open inside InnoDB
Process ID=2197, Main thread ID=140312433551104, state: sleeping
Number of rows inserted 169904, updated 1662462, deleted 3, read 44626802863
26.33 inserts/s, 202.20 updates/s, 0.00 deletes/s, 6061352.15 reads/s

虽然我已经检查过,我可以看到mysql的开放文件限制为65000,而mysql中的Opened_files用法是84981. 我的问题是“内核限制”打开文件限制“和mysql Opened_files有关吗?”

show global variables like 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 65536 

MariaDB [(none)]> show status like '%Opened_files%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_files  | 84981  |
+---------------+-------+
1 row in set (0.00 sec)

我们遇到异常突然的巨大尖峰,我们的api开始掉线。

2 个答案:

答案 0 :(得分:2)

这是两件不同的事情。一个Opened_files是一个计数器,它告诉您自上次mysqld重新启动以来打开表的次数。 如果您想调整数据库,可以通过调整table_open_cache来获得更好的性能,但这超出了这个问题的范围

另一方面,open file limit是一个硬操作系统限制,它会告诉您可以同时打开多少个文件。限制通常略低于2 ^ 16(别名为文件限制)。更多细节再次解释并超出范围。

直接回答您的问题:它们无关。

答案 1 :(得分:1)

有趣的值是Opened_files / Uptime的商。比方说,2 /秒是“合理的”。

也相关:table_open_cacheinnodb_open_files和其他人。

如需更全面的分析,请提供

  • RAM大小
  • SHOW VARIABLES;
  • 显示全球状态;

您提供的代码段似乎暗示了一些重型表格扫描?也许缺少一些索引?我们来讨论一些常见或较慢的查询。