【问题标题】:kernel limit "open file limit " and mysql "Opened_files" related?内核限制“打开文件限制”和mysql“Opened_files”有关吗?
【发布时间】:2018-01-06 17:36:06
【问题描述】:

我们正在托管我们的 courier 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 开始断开连接。

【问题讨论】:

    标签: mysql performance load mariadb


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      也相关:table_open_cacheinnodb_open_files 等。

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

      • 内存大小
      • 显示变量;
      • 显示全球状态;

      您提供的 sn-p 似乎暗示了一些繁重的表扫描?也许缺少一些索引?让我们讨论一些常见的或速度较慢的查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        相关资源
        最近更新 更多