上一章簡述了 利用 sysbench 進行測壓時,資料庫能抗下多少 QPS, TPS等資料庫伺服器的名額。
但是本質上 如果你的機器性能特别好。可能你采用 10個 線程 ,20個線程等,是無法測試出資料庫的最高負載能力。
那麼,我們可以通過不斷增加線程數量,同時觀察機器的性能。讓資料庫去承載更高的QPS
四、關于生産環境下的MySQL(下)(sysbench 壓測)
4-1 為什麼我們在不停增加線程數的時候,要密切關注機器性能?有什麼意義呢?
- 首先 不斷增加線程數,可以測試出資料庫能承載更高的QPS。
-
至于密切關注機器性能。
首先假設你的資料庫目前測試下QPS是1500。此時你的 CPU、記憶體、IO、網絡 負載都處理合理範圍内且偏高(硬體還沒到極緻)
但是如果你不斷增加線程,此時資料庫可以抗下QPS 2500 ,但是此時CPU、記憶體、IO、網絡 已經滿負載了,此時機器都快挂了。你此時說 機器能抗下QPS 2500是沒有實際意義的。(生産環境根本扛不住)。
是以在測試中,可以不斷加線程 提高QPS,同時關注機器名額。當到達一個臨界值時,就不能繼續增加線程數了。
4-2 如何觀察 CPU、記憶體、磁盤IO、網絡負載的情況
- CPU: 可以利用 top指令進行觀察。 top - 13:04:13 up 2:26, 1 user, load average: 0.33, 0.34, 0.36
四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測) - 13.04.13 是目前時間
- up 2:25 表示 運作了2.25個小時
- 1 user 表示 隻有一個使用者在使用
- load average 0.32 0.34 0.36 表示 CPU 最近 1 分鐘 5分鐘 15分鐘内的平均負載數值
- 關于負載數值:負載=1,表示CPU中的一個核心已經跑滿了。
- 記憶體負載情況 : 同樣使用 top指令檢視 KiB Mem : 10060320 total, 6279428 free, 2598168 used, 1182724 buff/cache
四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測) - 總大小為 10060320 KB, 空閑 6279428 KB, 緩沖區: 1182724KB
- 如果你記憶體到達 70~80 % 就差不多了
- 磁盤IO情況: 使用 dstat 指令 (如果沒有安裝 請自行安裝)
- 磁盤IO吞吐量: 使用 dstat -d 上圖表示磁盤每秒 讀取資料量 和 寫入資料量
四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測) - 磁盤的IOPS: 使用 指令 dstat -r 上圖表示 随機磁盤讀取每秒多少次,随機磁盤寫入每秒多少次
四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測) -
候密切觀察機器的磁盤IO情況,如果磁盤IO吞吐量已經太高了,都達到極限的每秒上百
MB了,或者随機磁盤讀寫每秒都到極限的兩三百次了,此時就不要繼續增加線程數量了,否則磁盤IO負載就太高了。
- 磁盤IO吞吐量: 使用 dstat -d
- 網絡負載: dstat -n
四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測) - 表示每秒通過網卡發送多少kb,接收了多少kb