Mysql

如何防止 Innob db 達到 97% 磁碟 I/O 使用率

  • January 12, 2016

我們的數據庫(InnobDb)在隨機時間達到 99% 的 I/O 峰值。在峰值之後,它下降到大約 2%,直到再次峰值。在這些時間間隔內沒有執行一些“超級”查詢。我們在 digitalocean 上使用 16 GB Ram、8 CoreProcessor 和 160GB SSD 磁碟執行 vp。Out 數據庫包含 1BG 的數據。我們懷疑我們的配置有問題——我們有 13 GB 記憶體沒有使用。有人知道怎麼回事嗎?我需要提供更多資訊嗎?

尖峰截圖連結:http: //imgur.com/na000pm

連結到 my.conf: http ://paste.bradleygill.com/index.php?paste_id=1346993

連結到 mysql 顯示狀態: http ://paste.bradleygill.com/index.php?paste_id=1346995

我們有兩個問題:

  1. 我們有一個使用三個連接的 mysql 查詢。原來這個函式使 Mysql 崩潰。我們重寫了這個查詢以使用 4 個沒有連接的 mysql 查詢,這解決了這個問題。(有點熱修復,我們可能會重寫該函式,以便可以記憶體它)。

  2. 當我們只使用 10% 的記憶體https://dba.stackexchange.com/questions/121324/mysql-only-using-10-of-cache時,我們經歷了大約 99.9% 的 I/O 等待。我們嘗試編輯 mysql 配置(在底部引用)。這有很大幫助,但沒有解決問題。事實證明,共享伺服器上的另一個使用者導致了 99.8% 的 I/O 峰值。在聯繫我們的伺服器提供商後,他們將伺服器移動到另一個分區,問題得到了解決。

table_open_cache = 1024 
sort_buffer_size = 4M 
read_buffer_size = 128k 
query_cache_size= 128M 
query_cache_type = 1 
tmp_table_size = 64M 
thread_cache_size = 20 
innodb_buffer_pool_size = 512M 
innodb_additional_mem_pool_size = 20M 
innodb_log_file_size = 64M 
innodb_log_buffer_size = 8M 
innodb_file_per_table innodb_file_format = Barracuda

引用自:https://serverfault.com/questions/737321