?fabric 網(wǎng)絡(luò)性能測(cè)試
?項(xiàng)目介紹
主要測(cè)試fabric吞吐量和并發(fā)浦箱,基于fabric-sdk-go,測(cè)試工具使用wrk
項(xiàng)目依賴
- fabric-sdk-go (它本身有很多依賴)
- git clone https://github.com/wg/wrk.git
安裝
go get -u learnergo/fabric-performance-test
cd $GOPATH/src/github.com/learnergo/fabric-performance-test
chaincode
測(cè)試鏈碼(官網(wǎng))镇草,主要做了存(put)取(get)操作砌创,存的過(guò)程加入了加解密操作增加復(fù)雜度摆尝,cli 操縱示例:
peer chaincode query -C mychannel -n mycc -c '{"Args":["get","a"]}'
peer chaincode invoke -o orderer.example.com:7050? --tls true --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["put","a",b"]}'
?實(shí)現(xiàn)思路
因?yàn)橹饕獋?cè)重吞吐和并發(fā)測(cè)試亭病,對(duì)通道和鏈碼安裝部分不是很側(cè)重。
本項(xiàng)目fabric網(wǎng)絡(luò)有mychannel通道和testcc鏈碼(名字可以自己確定攒至,并在程序和配置中對(duì)應(yīng)修改)厚者。
在用命令行創(chuàng)建鏈碼時(shí),先存入一個(gè)值對(duì)("a":"b"),取的測(cè)試是取a值迫吐;存的測(cè)試是存入當(dāng)前時(shí)間戳库菲。
**特別提示**:
為了避免日志打印對(duì)性能影響,只打印了error日志志膀。運(yùn)行正常的標(biāo)志也就是沒(méi)有日志打印
?操作步驟
- 配置fixtures下證書密鑰和配置文(只配置一個(gè)peer和orderer即可)
- 運(yùn)行main.go
- 在新窗口用wrk進(jìn)行測(cè)試(調(diào)整-t 和-c 值即可熙宇,-d 越大越準(zhǔn)確)
?測(cè)試環(huán)境
多機(jī)
Linux VM-0-17-ubuntu 4.4.0-91-generic #114-Ubuntu SMP Tue Aug 8 11:56:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
測(cè)試結(jié)果
讀寫并發(fā)都在1000以上鳖擒,讀的tps在400以上,寫在100以上
本人tps最佳參數(shù):
./wrk -t4 -c150 -d10 --timeout 10 http://localhost:8026/v1/gettest
./wrk -t4 -c100 -d10 --timeout 30 http://localhost:8080/puttest
影響因素
- 節(jié)點(diǎn)數(shù)量
- 服務(wù)器配置(cpu 內(nèi)存 網(wǎng)絡(luò)等等)
- 日志級(jí)別(級(jí)別越低性能越低)
- 是否啟用tls(不啟用tps高)
- solo or kafka (solo 高)
- leveldb couchdb選擇(leveldb 高)
- orderer 出塊配置(自己研究吧)