我们正在托管我们的快递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开始掉线。
答案 0 :(得分:2)
这是两件不同的事情。一个Opened_files
是一个计数器,它告诉您自上次mysqld
重新启动以来打开表的次数。
如果您想调整数据库,可以通过调整table_open_cache
来获得更好的性能,但这超出了这个问题的范围
另一方面,open file limit
是一个硬操作系统限制,它会告诉您可以同时打开多少个文件。限制通常略低于2 ^ 16(别名为文件限制)。更多细节再次解释并超出范围。
直接回答您的问题:它们无关。
答案 1 :(得分:1)
有趣的值是Opened_files / Uptime的商。比方说,2 /秒是“合理的”。
也相关:table_open_cache
,innodb_open_files
和其他人。
如需更全面的分析,请提供
您提供的代码段似乎暗示了一些重型表格扫描?也许缺少一些索引?我们来讨论一些常见或较慢的查询。