免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Sysbench測試神器:一條命令生成百萬級測試數(shù)據(jù)

優(yōu)質(zhì)文章,第一時間送達!

1. 基準(zhǔn)測試

基準(zhǔn)測試(benchmarking)是性能測試的一種類型,強調(diào)的是對一類測試對象的某些性能指標(biāo)進行定量的、可復(fù)現(xiàn)、可對比的測試。

進一步來理解,基準(zhǔn)測試是在某個時候通過基準(zhǔn)測試建立一個已知的性能水平(稱為基準(zhǔn)線),當(dāng)系統(tǒng)的軟硬件環(huán)境發(fā)生變化之后再進行一次基準(zhǔn)測試以確定那些變化對性能的影響,這也是基準(zhǔn)測試最常見的用途。其他用途包括測定某種負載水平下的性能極限、管理系統(tǒng)或環(huán)境的變化、發(fā)現(xiàn)可能導(dǎo)致性能問題的條件等等。

2. 基準(zhǔn)測試的作用

對于大多數(shù)Web應(yīng)用而言,系統(tǒng)的瓶頸往往很容易發(fā)生在數(shù)據(jù)庫端,原因很簡單:Web應(yīng)用中的其他因素,例如網(wǎng)絡(luò)帶寬、負載均衡節(jié)點、應(yīng)用服務(wù)器(包括CPU、內(nèi)存、硬盤燈、連接數(shù)等)、緩存,都很容易通過水平的擴展(俗稱加機器)來實現(xiàn)性能的提高。而對于數(shù)據(jù)庫如MySQL,由于數(shù)據(jù)一致性的要求,無法通過增加機器來分散向數(shù)據(jù)庫寫數(shù)據(jù)帶來的壓力;雖然可以通過前置緩存(Redis等)、讀寫分離、分庫分表來減輕壓力,但是與系統(tǒng)其它組件的水平擴展相比,受到了太多的限制。

而對數(shù)據(jù)庫的基準(zhǔn)測試的作用,就是分析在當(dāng)前的配置下(包括硬件配置、OS、數(shù)據(jù)庫設(shè)置等),數(shù)據(jù)庫的性能表現(xiàn),從而找出數(shù)據(jù)庫的性能閾值,并根據(jù)實際系統(tǒng)的要求調(diào)整配置。除此之外,對數(shù)據(jù)庫服務(wù)器進行基準(zhǔn)測試,也通常用于觀察對比數(shù)據(jù)庫結(jié)構(gòu)修改之前以及修改之后,其性能會受到什么樣的影響。

3. 基準(zhǔn)測試與壓力測試區(qū)別

很多時候,基準(zhǔn)測試和壓力測試在實際使用的過程中,很容易被弄混淆。基準(zhǔn)測試可以理解為針對系統(tǒng)的一種壓力測試。但基準(zhǔn)測試不關(guān)心業(yè)務(wù)邏輯,更加簡單、直接、易于測試,數(shù)據(jù)可以由工具生成,不要求真實;而壓力測試一般考慮業(yè)務(wù)邏輯(如購物車業(yè)務(wù)),要求真實的數(shù)據(jù)。

4. 基準(zhǔn)測試的指標(biāo)及工具

常見的數(shù)據(jù)庫指標(biāo)包括:

  • TPS/QPS:主要用于衡量吞吐量。
  • 響應(yīng)時間:包括平均響應(yīng)時間、最小響應(yīng)時間、最大響應(yīng)時間、時間百分比等,其中時間百分比參考意義較大,如前95%的請求的最大響應(yīng)時間。
  • 并發(fā)量:同時處理的查詢請求的數(shù)量。

如果只是針對數(shù)據(jù)庫服務(wù)器,例如只針對MySQL數(shù)據(jù)庫開展基準(zhǔn)測試,一般可以使用專門的工具進行,例如mysqlslap、sysbench等。

mysqlslap是MySQL5.1.4之后自帶的benchmark基準(zhǔn)測試工具,該工具可以模擬多個客戶端同時并發(fā)的向服務(wù)器發(fā)出查詢更新,給出了性能測試數(shù)據(jù)而且提供了多種引擎的性能比較。

其中,sysbenchmysqlslap更通用、更強大,本文將給大家介紹如何使用sysbench來開展基準(zhǔn)測試,之所以說它是測試神器,是因為除了能對利用它對各類基礎(chǔ)設(shè)施對象開展基準(zhǔn)測試以外,還可以利用它的實現(xiàn)思路幫助我們生成成百上千萬的測試數(shù)據(jù),往下看,一起來揭秘吧~

5. sysbench基準(zhǔn)測試

sysbench是一個模塊化的、跨平臺、多線程基準(zhǔn)測試工具,主要用于評估測試各種不同系統(tǒng)參數(shù)下的數(shù)據(jù)庫負載情況,它主要包括以下幾種方式的測試:

  • cpu性能
  • 磁盤io性能
  • 調(diào)度程序性能
  • 內(nèi)存分配及傳輸速度
  • POSIX線程性能
  • 數(shù)據(jù)庫性能(OLTP基準(zhǔn)測試)

目前sysbench主要支持MySQL,pgsql,Oracle這3類數(shù)據(jù)庫

默認支持MySQL,如果需要測試Oracle/PostgreSQL,則在configure時需要加上–with-oracle或者–with-pgsql參數(shù).

通過sysbench工具對數(shù)據(jù)庫開展基準(zhǔn)測試最大的亮點在于:可以自動幫你在數(shù)據(jù)庫里構(gòu)造出來大量的數(shù)據(jù),你想要多少數(shù)據(jù),就自動給你構(gòu)造出來多少條數(shù)據(jù)。同時還可以模擬幾千個線程并發(fā)的訪問數(shù)據(jù)庫,模擬使用各種各樣的 SQL 語句,包括模擬出來各種事務(wù)提交到你的數(shù)據(jù)庫里去,甚至可以模擬出幾十萬的 TPS 去壓測數(shù)據(jù)庫。

6. sysbench基本語法

1、在使用前,先要需要安裝,建議在Linux下安裝sysbench

yum install -y sysbench

2、sysbench的基本語法如下:

sysbench [options]... [testname] [command]

其中,command是sysbench要執(zhí)行的命令,包括prepare、runcleanup。顧名思義:

  • prepare是為測試提前準(zhǔn)備數(shù)據(jù)
  • run是執(zhí)行正式的測試
  • cleanup是在測試完成后對數(shù)據(jù)庫進行清理。

testname指定了要進行的測試,在老版本的sysbench中,可以通過--test參數(shù)指定測試的腳本;而在新版本中,--test參數(shù)已經(jīng)聲明為廢棄,可以不使用--test,而是直接指定腳本。

如下兩種方法效果是一樣的:

sysbench --test=./tests/include/oltp_legacy/oltp.lua
sysbench ./tests/include/oltp_legacy/oltp.lua

測試時使用的腳本為lua腳本,可以使用sysbench自帶腳本,也可以自己開發(fā)。對于大多數(shù)應(yīng)用,使用sysbench自帶的腳本就足夠了。不同版本的sysbench中,lua腳本的位置可能不同,可以自己在sysbench路徑下使用find命令搜索oltp.lua。

大多數(shù)數(shù)據(jù)服務(wù)都是oltp類型的,如果你不了解什么是oltp,那么大概率你的數(shù)據(jù)服務(wù)就是oltp類型的。

7. sysbench使用實踐(一鍵構(gòu)建百萬級數(shù)據(jù))

接下來,給大家演示一下,如何使用sysbench來對MySQL開展基準(zhǔn)測試,以及如何利用sysbench一條命令來構(gòu)建百萬級測試數(shù)據(jù)。

注:sysbench基準(zhǔn)測試技能,在筆者的全棧測試開發(fā)訓(xùn)練營重磅消息 | 2020年最新全棧測試開發(fā)技能實戰(zhàn)指南(第1期)數(shù)據(jù)庫版塊中,對訓(xùn)練營的學(xué)員有過專題介紹,本文算是免費給公號讀者送技能福利了。

操作方法:

1、在基準(zhǔn)測試prepare準(zhǔn)備階段,先創(chuàng)建默認的測試庫,例如sysbench_test

mysql> create database sysbench_test;      #創(chuàng)建數(shù)據(jù)庫

如此處,創(chuàng)建sysbench_test數(shù)據(jù)庫

2、準(zhǔn)備數(shù)據(jù),時間比較長,本文主要為了演示方法,因此把table_size設(shè)置的小一點

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test prepare

其中,幾個關(guān)鍵參數(shù):

  • --tables:指定生成表的數(shù)量,此處設(shè)置了5張表,表明生成5張測試表,讀者可根據(jù)實際需要,調(diào)整此值。
  • --table_size:指定生成表中生成的數(shù)據(jù)量,上述例子,表明每張表生成100條測試數(shù)據(jù),實際可以根據(jù)需要調(diào)整引值,比如調(diào)整為:1000000,即代表生成一百萬條測試數(shù)據(jù)。
  • --mysql-db: 連接的測試數(shù)據(jù)庫名稱。其它幾項參數(shù)較為簡單,就不一一介紹了。

執(zhí)行上述命令后,輸出如下:

命令執(zhí)行成功后,可以打開數(shù)據(jù)庫查看生成的數(shù)據(jù)是否和設(shè)置的對應(yīng):

可以看到,已經(jīng)自動生成了100條測試數(shù)據(jù)了,如果需要一鍵成生成百萬條測試數(shù)據(jù),只需要將--table_size=100 修改為 --table_size=1000000即可。

3、選擇一個lua腳本進行測試,如驗證讀寫性能,執(zhí)行命令如下:

 sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test --tables=5 --table_size=100 --threads=10 --time=30 --report-interval=3 run

上述命令,表明使用了10個并發(fā)線程數(shù),執(zhí)行時間為30秒,每3秒輸出一次測試信息。實際讀者可以將--threads=10--time=30值調(diào)大一些。

輸出信息類似如下:

其中,對于我們比較重要的信息包括:

  • queries:查詢總數(shù)及qps
  • transactions:事務(wù)總數(shù)及tps
  • Latency-95th percentile:前95%的請求的響應(yīng)時間。

4、執(zhí)行完測試,拿到所需要的測試結(jié)后,最后一步,記得要清理數(shù)據(jù),否則后面的測試可能會受到影響。

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test cleanup
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解MySQL基準(zhǔn)測試和sysbench工具
MySQL基準(zhǔn)測試工具sysbench
mysql基礎(chǔ)測試
MYSQL壓力測試工具sysbench安裝測試詳解
發(fā)現(xiàn)瓶頸
sysbench-0.5 如何使用lua腳本
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服