日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一、前言

在前面的壓力測試過程中,主要關注的是對接口以及服務器硬件性能進行壓力測試,評估請求接口和硬件性能對服務的影響。但是對于多數Web應用來說,整個系統的瓶頸在于數據庫。

原因很簡單:Web應用中的其他因素,例如網絡帶寬、負載均衡節點、應用服務器(包括CPU、內存、硬盤、連接數等)、緩存,都很容易通過水平的擴展(俗稱加機器)來實現性能的提高。而對于MySQL,由于數據一致性的要求,無法通過增加機器來分散向數據庫寫數據帶來的壓力;雖然可以通過前置緩存(redis等)、讀寫分離、分庫分表來減輕壓力,但是與系統其它組件的水平擴展相比,受到了太多的限制。

二、常見的數據庫壓測指標

 

數據庫壓力測試方法小結

 

與接口壓測指標類似,數據庫相關指標如下:

  • TPS/QPS:衡量吞吐量。
  • 響應時間:包括平均響應時間、最小響應時間、最大響應時間、時間百分比等,其中時間百分比參考意義較大,如前95%的請求的最大響應時間。。
  • 并發量:同時處理的查詢請求的數量。

三、使用sysbench進行數據庫壓測

1、基本介紹

sysbench是跨平臺的基準測試工具,支持多線程,支持多種數據庫;主要包括以下幾種測試:

  • cpu性能
  • 磁盤io性能
  • 調度程序性能
  • 內存分配及傳輸速度
  • POSIX線程性能
  • 數據庫性能(OLTP基準測試)

該工具可以自動幫你在數據庫里構造出來大量的數據,你想要多少數據,就自動給你構造出來多少條數據。同時還可以模擬幾千個線程并發的訪問數據庫,模擬使用各種各樣的 SQL 語句,包括模擬出來各種事務提交到你的數據庫里去,甚至可以模擬出幾十萬的 TPS 去壓測數據庫。

數據庫壓力測試方法小結

 

2、安裝sysbench:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

sudo yum -y install sysbench

sysbench --version

3、基于 sysbench 構造測試表和測試數據:

  • 首先需要在自己的數據庫里創建好一個測試庫,我們可以取個名字叫做 test,同時創建好對應的測試賬號,可以叫做 root,密碼是 123456,讓這個用戶有權限可以訪問 test。
  • 基于 sysbench 構建 20 個測試表,每個表里有 100 萬條數據,接著使用 100 個并發線程去對這個數據庫發起訪問,連續訪問 5 分鐘,也就是 300 秒。命令如下:
  • sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

4、執行測試:

(1)測試數據庫的綜合讀寫 TPS,使用的是 oltp_read_write 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run

(2)測試數據庫的只讀性能,使用的是 oltp_read_only模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run

(3)測試數據庫的寫入性能,使用的是 oltp_write_only 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run

使用上面的命令,sysbench 工具會根據你的指令構造出各種各樣的 SQL 語句去更新或者查詢你的 20 張測試表里的數據,同時監測出你的數據庫的壓測性能指標,最后完成壓測之后,可以執行 cleanup 命令,清理數據。

數據庫壓力測試方法小結

 

5、壓測結果分析:

按照我們上面的命令,我們是讓它每隔 1 秒都會輸出一次壓測報告的,此時它每隔一秒會輸出類似下面的一段東西:

[ 10s ] thds: 100 tps: 500 qps: 5000 (r/w/o: 3500/1000/500) lat (ms, 95%): 20 err/s: 0.00 reconn/s: 0.00

  • thds:100,這個意思就是有 100 個線程在壓測
  • tps:500,這個意思就是每秒執行了 500 個事務
  • qps:5000,這個意思就是每秒可以執行 5000 個請求
  • (r/w/o: 3500/1000/500):這個意思就是說,在每秒 5000 個請求中,有 3500 個請求是讀請求,1000 個請求是寫請求,500 個請求是其他的請求,就是對 QPS 進行了拆解
  • lat (ms, 95%):20,這個意思就是說,95% 的請求的延遲都在 20 毫秒以下
  • err/s: 0.00 reconn/s: 0.00:這兩個的意思就是說,每秒有 0 個請求是失敗的,發生了 0 次網絡重連

結束語

使用sysbench工具可以直接對數據庫性能進行評價,但是在結果展示方面還有待進一步提升。當然后續可以對結果進行進一步處理,比如寫入表格或作圖,會更加直觀。

分享到:
標簽:數據庫 壓力測試
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定