内核限制"open file limit "和mysql"Opened_files"有关系吗?

kernel limit "open file limit " and mysql "Opened_files" related?

我们正在托管我们的快递 api 应用程序,该应用程序具有大量数据插入和数据读取。我们正在努力为我们的 ubuntu 16 台服务器实现最大吞吐量,配备 55cpu 和 128gb ram 以及 1tb SSD 磁盘。下面是"innobdb status result"

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。我的问题是 "Is kernel limit "打开文件限制”和mysqlOpened_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 开始断开连接。

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

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

直接回答你的问题:它们没有关系。

有趣的值是 Opened_files / Uptime 的商。比方说,2/秒是 'reasonable'.

也相关:table_open_cacheinnodb_open_files 和其他。

如需更透彻的分析,请提供

  • RAM 大小
  • 显示变量;
  • 显示全局状态;

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