天天看點

四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測)

上一章簡述了 利用 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指令進行觀察。
    四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測)
    top - 13:04:13 up 2:26, 1 user, load average: 0.33, 0.34, 0.36
    • 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指令檢視
    四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測)
    KiB Mem : 10060320 total, 6279428 free, 2598168 used, 1182724 buff/cache
    • 總大小為 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負載就太高了。

  • 網絡負載: dstat -n
    四、關于生産環境下的MySQL(中)(sysbench 壓測)四、關于生産環境下的MySQL(下)(sysbench 壓測)
    • 表示每秒通過網卡發送多少kb,接收了多少kb