Aerospike C客戶端函數庫附帶了一個benchmark工具,是使用C客戶端函數庫構建。 利用這個benchmark工具,能夠:
以特定的讀取比率向數據庫寫入數據與讀取數據。改變客戶端線程數,模擬客戶端並發情況。從客戶端的角度觀察延遲的分布。在可以使用benchmark工具之前,需要安裝“開發包”及其先決條件要求的包。
構建benchmark工具:
$ cd benchmarks
$ make
啟動工具
$ make run
此命令將用默認的負載、以localhost為集群服務器地址啟動benchmark,簡要輸出內容如下:
$ make run
./target/benchmarks -h 127.0.0.1 -p 3000
hosts: 127.0.0.1
port: 3000
namespace: test
set: testset
keys/records: 1000000
object spec: int
random values: false
minimum number of transactions: -1
workload: read 50% write 50%
threads: 16
max throughput: unlimited
read timeout: 0 ms
write timeout: 0 ms
max retries: 1
debug: false
latency: false
shared memory: false
read replica: master
read consistency level: one
write commit level: all
2014-11-06 11:43:29 INFO Read/write using 1000000 records
2014-11-06 11:43:29 INFO Start 16 generator threads
2014-11-06 11:43:30 INFO write(tps=10847 timeouts=0 errors=0) read(tps=10772 timeouts=0 errors=0) total(tps=21619 timeouts=0 errors=0)
2014-11-06 11:43:31 INFO write(tps=11477 timeouts=0 errors=0) read(tps=11271 timeouts=0 errors=0) total(tps=22748 timeouts=0 errors=0)
2014-11-06 11:43:32 INFO write(tps=11051 timeouts=0 errors=0) read(tps=10698 timeouts=0 errors=0) total(tps=21749 timeouts=0 errors=0)
隨機讀取/更新的鍵是1000000個。50%的讀取請求,50%的寫入請求。
更詳細的工具屬性,請使用如下命令查看:
$ ./target/benchmarks -u
Benchmark示例
示例1
連接127.0.0.1:3000,使用名稱為test的namespace。使用1億個鍵(鍵使用整型值,范圍1~100000000)、名稱為testbin的bin、bin值為50個字符的字符串。90%的讀與10%的寫入,20個並發線程。
$ ./target/benchmarks -h 127.0.0.1 -p 3000 -n test -k 100000000 -o S:50 -w RU,90 -z 20
示例2
連接127.0.0.1:3000,使用名稱為test的namespace與名稱為demoset的set。
使用1百萬個鍵,1400個字符的字符串做為值。80%的讀取與20%的寫入,8個並發線程。限制每秒事務數為2500讀寫的超時時間50毫秒顯示客戶端延遲百分比為四欄:<=1ms, >1ms, >8ms, >64ms。
$ ./target/benchmarks -h 127.0.0.1 -p 3000 -n test -s demoset -k 1000000 -o S:1400 -g 2500 -w RU,80 -z 8 -L 4,3