2017-07-31 96 views
0

我們正在託管我們的快遞API應用程序,它具有大量數據插入和數據讀取。我們正試圖通過爲我們的具有55cpu和128gb ram和1tb SSD磁盤的ubuntu 16服務器實現最大限度的通過。下面是「innobdb狀態結果」和mysql「Opened_files」有關?

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 

雖然我已籤,我可以看到我們的打開文件限制爲65000在MySQL的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

nisamudeen97:如果回答您的問題,請接受答案 – tukan

回答

2

這是兩件不同的事情。其中一個Opened_files是一個計數器,它告訴您自從上次mysqld重新啓動以來您打開表格的次數。 如果你要調整你的數據庫,你可以通過tunning table_open_cache獲得更好的性能自動,但就是出這個問題

在另一方面open file limit的範圍是硬操作系統的限制,它會告訴你有多少個文件,你可以同時打開。該限制通常比2^16(別名文件限制)低一些。更大的細節再次解釋和超出範圍。

要直接回答你的問題:他們沒有關係。

1

有趣的值將是Opened_files/Uptime的商數。比如說,每秒2次是「合理的」。

也相關:table_open_cache,innodb_open_files和其他。

爲了更透徹的分析,請提供

  • RAM大小
  • SHOW變量;
  • SHOW GLOBAL STATUS;

您提供的代碼片段似乎意味着某些重型表掃描?也許缺少一些索引?我們來討論一些常見或較慢的查詢。