03.06 第02問:怎麼模仿磁盤 IO 慢的情況?


第02問:怎麼模仿磁盤 IO 慢的情況?


問題:

怎麼模仿磁盤 IO 慢的情況?


實驗:

1. 創建延遲的磁盤

用 dd 創造一片 100M 的文件


第02問:怎麼模仿磁盤 IO 慢的情況?


將創建的文件用 losetup 虛擬成塊設備 /dev/loop3


第02問:怎麼模仿磁盤 IO 慢的情況?


將塊設備 /dev/loop3 映射成帶延遲的設備(對於讀操作和寫操作都延遲 100ms)


第02問:怎麼模仿磁盤 IO 慢的情況?


2. 用 MySQL 進行實驗

將磁盤格式化,並載入


第02問:怎麼模仿磁盤 IO 慢的情況?


用 dbdeployer 安裝 MySQL,將 binlog 的位置設置到 /mnt/slow,開啟雙 1 刷盤參數


第02問:怎麼模仿磁盤 IO 慢的情況?


用 mysqlslap 進行壓力測試


第02問:怎麼模仿磁盤 IO 慢的情況?


通過 iostat 可以觀察到 binlog 所在的塊設備 IO 發生飽和:

1. dm-0 (/dev/mapper/dm-slow) 設備的 IO 出現了排隊(aqu-sz),使用率飽和。

2. loop3 是 dm-0 背後的塊設備,其 IO 還有充足的能力,可證明 dm-0 帶有 IO 延遲。


第02問:怎麼模仿磁盤 IO 慢的情況?


通過 pt-ioprofile 觀察 MySQL 的 IO 消耗時間,可以看到花費在 binlog IO 上的時間遠大於其他消耗。


第02問:怎麼模仿磁盤 IO 慢的情況?


結果:

我們製造了一個慢 IO 的設備,將 MySQL binlog 放在其中,製造了 binlog IO 慢的場景。

有了這個手段,之後我們可以分析 MySQL 在局部文件 IO 慢時,哪些狀態量會發生變化,以及 MySQL 會發生什麼行為。


關於 MySQL 的技術內容,你們還有什麼想知道的嗎?趕緊留言告訴小編吧!


分享到:


相關文章: