《NoSQL性能測試工具:memtier_benchmark》要點(diǎn):
本文介紹了NoSQL性能測試工具:memtier_benchmark,希望對您有用。如果有疑問,可以聯(lián)系我們。
memtier_benchmark是Redis Labs推出的一款命令行工具,它能夠產(chǎn)生各種各樣的流量模式,可以對Memcached和Redis實(shí)例進(jìn)行基準(zhǔn)測試.這個工具提供了豐富的自定義選項(xiàng)和報(bào)表功能,通過命令行界面就能夠輕松地使用.這個工具的一些優(yōu)點(diǎn)如下所述:
memtier_benchmark同時支持Redis和Memcached(二進(jìn)制和文本)協(xié)議,因此你可以對這兩種NoSQL系統(tǒng)進(jìn)行基準(zhǔn)測試,甚至可以比較它們在不同場景中的性能.
memtier_benchmark能夠啟動多個工作線程(使用-t
選項(xiàng)指定數(shù)量),每個線程能夠驅(qū)動若干個客戶端(使用-c
選項(xiàng)指定數(shù)量).多線程使得你能夠更好的利用客戶端主機(jī)的硬件資源,即便使用單臺主機(jī),你也能夠生成較高的流量負(fù)載.
memtier_benchmark能夠迭代運(yùn)行多次基準(zhǔn)測試(使用-x
選項(xiàng)指定迭代次數(shù)),它會自動生成測試報(bào)告,包含最好和最壞的運(yùn)行結(jié)果,以及聚合平均值.
memtier_benchmark能夠控制GET
和SET
操作數(shù)量的比率(使用--ratio
選項(xiàng)),這樣便能針對各種訪問模式進(jìn)行基準(zhǔn)測試.
memtier_benchmark能夠控制GET
和SET
操作的訪問模式.每種操作的訪問模式都可以獨(dú)立設(shè)置,可以是隨機(jī)訪問或連續(xù)訪問.
memtier_benchmark能夠?yàn)闇y試鍵設(shè)置相同的過期時間,也可以在指定范圍之內(nèi)設(shè)置不同的過期時間(使用--expiry-range
選項(xiàng)).
一、環(huán)境描述
1. 虛擬機(jī)配置
CPU:單核 2.4GHz
內(nèi)存:DDR3 1333 2GB
硬盤:120GB
IP地址:192.168.21.136
操作系統(tǒng):CentOS 6.6 x86_64 Minimal
2. 編譯環(huán)境
GCC:4.4.7 20120313
YUM源:官方Base源
3. memtier_benchmark
版本:1.2.8
安裝方式:GIT下載和編譯安裝(本文內(nèi)容)
二、安裝步驟
1. 安裝編譯環(huán)境和依賴包
在shell中運(yùn)行以下命令:
## 安裝編譯環(huán)境
yum install -y autoconf automake make gcc-c++
## 安裝依賴包
yum install -y pcre-devel zlib-devel libmemcached-devel wget git
2. 編譯安裝libevent
CentOS 6.6預(yù)裝的libevent版本較老,必須手動編譯安裝新版本的libevent.在shell中運(yùn)行以下命令,下載、編譯和安裝libevent-2.0.22:
cd /root/Downloads
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xvzf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure
make && make install
3. 更新庫文件配置
在shell中運(yùn)行以下命令,更新libevent庫文件的配置:
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:\${PKG_CONFIG_PATH}" >> /etc/profile
source /etc/profile
ldconfig /usr/local/lib
4. 編譯安裝memtier_benchmark工具
在shell中運(yùn)行以下命令,下載、編譯和安裝memtier_benchmark工具,最后加入系統(tǒng)運(yùn)行路徑:
cd /root/Downloads
git clone https://github.com/RedisLabs/memtier_benchmark.git
cd memtier_benchmark
autoreconf -ivf
./configure --prefix=/usr/local/memtier
make && make install
echo "export PATH=/usr/local/memtier/bin:\${PATH}" >> /etc/profile
source /etc/profile
5. 驗(yàn)證安裝
在shell中運(yùn)行以下命令,驗(yàn)證memtier_benchmark是否安裝成功:
memtier_benchmark --help
三、常用選項(xiàng)
memtier_benchmark是一款用于Memcached/Redis的NoSQL流量生成器和性能基準(zhǔn)測試工具,可以在Shell中通過如下方式調(diào)用:
memtier_benchmark [options]
1. 連接和通用選項(xiàng)
-s
或--server=ADDR
服務(wù)器地址(默認(rèn)值為localhost).
-p
或--port=PORT
服務(wù)器端口(默認(rèn)值為6379).
-S
或--unix-socket=SOCKET
UNIX域套接字的名稱(默認(rèn)值為none).
-P
或--protocol=PROTOCOL
使用的協(xié)議(默認(rèn)值為redis).其他受支持的協(xié)議:memcache_text和memcache_binary.
-x
或--run-count=NUMBER
完整測試的迭代執(zhí)行次數(shù).
-D
或--debug
輸出調(diào)試信息.
--client-stats=FILE
生成每個客戶端的統(tǒng)計(jì)文件.
--out-file=FILE
輸出結(jié)果文件的名稱(默認(rèn)值為stdout).
--show-config
運(yùn)行基準(zhǔn)測試之前,輸出詳細(xì)的配置信息.
--hide-histogram
不輸出詳細(xì)的延遲柱狀圖.
--help
輸出幫助信息.
--version
輸出版本信息.
2. 測試選項(xiàng)
-n
或--requests=NUMBER
每個客戶端發(fā)出的請求總數(shù)(默認(rèn)值為10000).若使用“allkeys”,則基準(zhǔn)測試會使用整個測試鍵的范圍.
-c
或--clients=NUMBER
每個線程驅(qū)動的客戶端的數(shù)量(默認(rèn)值為50).
-t
或--threads=NUMBER
基準(zhǔn)測試使用的線程數(shù)量(默認(rèn)值為4).
--test-time=SECS
基準(zhǔn)測試的持續(xù)時間,以秒為單位.
--ratio=RATIO
SET和GET操作的比率(默認(rèn)值為1:10).
--pipeline=NUMBER
管道請求的并發(fā)數(shù)量(默認(rèn)值為1).
--reconnect-interval=NUM
執(zhí)行重新連接之后的請求數(shù)量.
--multi-key-get=NUM
使用Redis的MGET命令,這個命令最多可以一次獲取NUM個鍵的值(默認(rèn)值為0).
-a
或--authenticate=CREDENTIALS
登錄Redis服務(wù)器時使用的憑證.根據(jù)使用的協(xié)議,可以是PASSWORD或USER:PASSWORD.
--select-db=DB
當(dāng)測試一臺Redis服務(wù)器時,選擇它的DB編號.
--distinct-client-seed
每個客戶端都使用一個不同的隨機(jī)數(shù)種子.
--randomize
基于時間戳的隨機(jī)數(shù)種子(默認(rèn)為常數(shù)值).
3. 對象選項(xiàng)
-d
或--data-size=SIZE
對象數(shù)據(jù)的大小(默認(rèn)值為32).
--data-offset=OFFSET
值的真實(shí)大小等于data-size + data-offset.基準(zhǔn)測試將會使用Redis的SETRANGE和GETRANGE命令(默認(rèn)值為0).
-R
或--random-data
基準(zhǔn)測試將會使用隨機(jī)化的測試數(shù)據(jù).
--data-size-range=RANGE
基準(zhǔn)測試使用的測試數(shù)據(jù)的大小是隨機(jī)的,數(shù)據(jù)大小在指定的范圍之內(nèi)(min-max).
--data-size-list=LIST
根據(jù)權(quán)重列表設(shè)置測試數(shù)據(jù)的大小(size1:weight1,..sizeN:weightN).
--data-size-pattern=R|S
當(dāng)這個選項(xiàng)設(shè)置為R時,就需要和--data-size-range
選項(xiàng)一起使用,測試數(shù)據(jù)的大小將會在指定的范圍之內(nèi)隨機(jī)取值.當(dāng)這個選項(xiàng)設(shè)置為S時,定義的測試數(shù)據(jù)大小將會在測試鍵的范圍之內(nèi)均勻分布,請參考--key-maximum
選項(xiàng).默認(rèn)值為R.
--expiry-range=RANGE
測試鍵的過期時間是一個隨機(jī)值,這個隨機(jī)值在指定的范圍之內(nèi).
4. 導(dǎo)入數(shù)據(jù)選項(xiàng)
--data-import=FILE
從文件中讀取對象數(shù)據(jù).
--data-verify
當(dāng)基準(zhǔn)測試結(jié)束時,執(zhí)行數(shù)據(jù)驗(yàn)證過程.
--verify-only
只執(zhí)行--data-verify
選項(xiàng)的數(shù)據(jù)驗(yàn)證過程,而不會執(zhí)行其他測試.
--generate-keys
為導(dǎo)入的對象生成測試鍵.
--no-expiry
忽略導(dǎo)入數(shù)據(jù)中的過期信息.
5. 測試鍵選項(xiàng)
--key-prefix=PREFIX
測試鍵的前綴(默認(rèn)值為“memtier-”).
--key-minimum=NUMBER
測試鍵ID的最小值(默認(rèn)值為0).
--key-maximum=NUMBER
測試鍵ID的最大值(默認(rèn)值為10000000).
--key-pattern=PATTERN
SET和GET操作的訪問模式(默認(rèn)值為R:R).可以取以下值:
G:高斯分布;
R:均勻隨機(jī);
S:連續(xù)訪問;
P:并行訪問(在連續(xù)訪問模式中,每個客戶端都具有測試鍵范圍的一個子集).
--key-stddev
高斯分布使用的標(biāo)準(zhǔn)偏差(默認(rèn)值為測試鍵范圍的1/6).
--key-median
高斯分布使用的期望值(默認(rèn)值為測試鍵范圍的中心值).
6. 等待選項(xiàng)
--wait-ratio=RATIO
SET和WAIT操作的比率(默認(rèn)不使用WAIT命令,默認(rèn)值為1:0).
--num-slaves=RANGE
等待指定范圍之內(nèi)的隨機(jī)數(shù)量的從機(jī)作出應(yīng)答.
--wait-timeout=RANGE
等待指定范圍之內(nèi)的時間,單位為毫秒(正太分布的中心值在這個范圍的中間).
四、偽隨機(jī)數(shù)據(jù)、高斯訪問模式和范圍操作
1. 偽隨機(jī)數(shù)據(jù)
memtier_benchmark基準(zhǔn)測試工具能夠生成隨機(jī)化的測試數(shù)據(jù),而數(shù)據(jù)大小則取決于已知的大小范圍.首先,將--data-size-pattern
選項(xiàng)設(shè)置為“S”(連續(xù)分配);然后,通過--data-size-range
選項(xiàng)指定隨機(jī)化的測試數(shù)據(jù)的大小范圍.以下示例將會產(chǎn)生基準(zhǔn)測試的鍵空間,其中的測試數(shù)據(jù)的大小將會在4字節(jié)至204字節(jié)之間均勻取值:
memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 <additional parameters>
在上文的示例中,我們已經(jīng)使用--random-data
選項(xiàng)來生成隨機(jī)數(shù)據(jù)了;除此之外,我們還使用--key-minimum
和--key-maximum
選項(xiàng)來控制測試鍵ID的取值范圍,總共產(chǎn)生200個測試鍵.第一個測試鍵,memtier-200,將會持有4字節(jié)的數(shù)據(jù);下一個測試鍵,將會持有5字節(jié)的數(shù)據(jù);以此類推,直到最后一個測試鍵,memtier-400,將會持有204字節(jié)的數(shù)據(jù).
2. 高斯訪問模式
memtier_benchmark基準(zhǔn)測試工具能夠使用高斯分布(也叫做正態(tài)分布)來訪問測試數(shù)據(jù).在支持高斯訪問模式之前,你可以將基準(zhǔn)測試的訪問模式設(shè)置為均勻隨機(jī)分布或連續(xù)分布.但是,為了更好的模擬真實(shí)用例,你可以使用這個新的選項(xiàng),確保memtier_benchmark的測試鍵訪問模式符合常見的高斯分布的鐘型曲線.當(dāng)使用高斯分布時,你還可以控制和設(shè)置標(biāo)準(zhǔn)偏差和期望值,它們是高斯分布的關(guān)鍵參數(shù).例如,你可以通過以下參數(shù)調(diào)用這個基準(zhǔn)測試工具:
memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 --key-pattern=G:G --key-stddev=10 --key-median=300 <additional parameters>
上述調(diào)用方式會將大部分的讀/寫訪問集中在第100個(memtier-300)測試鍵上.
3. 范圍操作
memtier-benchmark基準(zhǔn)測試工具支持Redis的SETRANGE
和GETRANGE
命令,可用于代替SET
和GET
命令.這個功能使得你在進(jìn)行基準(zhǔn)測試時,能夠明顯降低網(wǎng)絡(luò)流量的消耗,同時你仍然可以使用較大的測試數(shù)據(jù).例如,你可以將測試鍵的值的大小設(shè)置為1MB,但是只會讀取和寫入最后一個字節(jié),你可以通過以下參數(shù)調(diào)用這個基準(zhǔn)測試工具:
memtier-benchmark --data-offset=1048575 --data-size=1 <additional parameters>
《NoSQL性能測試工具:memtier_benchmark》是否對您有啟發(fā),歡迎查看更多與《NoSQL性能測試工具:memtier_benchmark》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9584.html