티스토리 뷰

반응형

JMeter 실행

JMeter 설치

임의의 디렉토리에 JMeter 4.0을 설치합니다. 여기에서는 사용자의 Downloads 디렉토리에 설치합니다.

압축 파일을 해제하기만 하면 JMeter를 실행할 수 있습니다.

# JMeter 설치
cd ~/Downloads
sudo wget http://apache.mirror.cdnetworks.com//jmeter/binaries/apache-jmeter-4.0.tgz
tar -xf apache-jmeter-4.0.tgz
rm -f apache-jmeter-4.0.tgz


JMeter 플러그인 설치

JMeter 압축 파일을 해제한 디렉토리에서 lib/ext 디렉토리 내에 jmeter-plugins-manager-1.1.jar을 설치합니다.

cd ~/Downloads/apache-jmeter-4.0/lib/ext
wget -O jmeter-plugins-manager-1.1.jar http://search.maven.org/remotecontent?filepath=kg/apc/jmeter-plugins-manager/1.1/jmeter-plugins-manager-1.1.jar


JMeter 실행

JMeter 압축 파일을 해제한 디렉토리에서 apache-jmeter-4.0/bin 디렉토리로 이동해 JMeter를 실행합니다.

# JMeter 실행
cd apache-jmeter-4.0/bin
./jmeter


JMeter 플러그인 설정

JMeter 실행 화면 상단의 메뉴 바에서 Options > Plugins Manager (has upgrades)를 클릭합니다.

그런 다음, Custom Thread Groups, 3 Basic Graphs, 5 Additional Graphs 플러그인을 적용합니다.

  1. Available Plugins 탭 클릭
  2. Custom Thread Groups, 3 Basic Graphs, 5 Additional Graphs 체크박스 선택
  3. Apply Changes and Restart JMeter 클릭

그러면, JMeter가 다시 시작됩니다.


※ 각 플러그인에는 다음과 같은 리스너들이 들어있습니다.

3 Basic Graphs

  • Active Threads Over Time
  • Response Time Over Time
  • Transactions per Second

5 Additional Graphs

  • Bytes Throughput Over Time
  • Connection Times Over Time
  • Hits per Second
  • Response Codes per Second
  • Response Latencies Over Time

JMeter 기본환경설정

Test Plan 설정

Test Plan에 테스트 진행 계획을 다음과 같이 입력합니다.

  • Name: Honeybee Plan
  • Comments: Honeybee blockchain network performance test plan

화면 중간 부분의 'Add' 버튼을 클릭해 User Defined Variables(사용자 정의 변수)를 설정합니다. 이 변수는 Thread Group 등과 같은 모든 하위 요소에서 사용할 수 있습니다.

  • Name: SERVER, Value: localhost
  • Name: LOOPCOUNT, Value: 20



Thread Group 추가

JMeter 화면 왼쪽에서 Test Plan에 대해 오른쪽 버튼을 클릭해 Thread Group을 추가합니다.


Thread Group 설정

Thread Group의 Thread Properties을 다음과 같이 설정합니다.

  • Number of Threads (users) : 350
  • Ramp-Up Period (in seconds) : 1
  • Loop Count : ${LOOPCOUNT}


Number of Threads의 값으로 가상의 유저 수를 지정할 수 있습니다. 여기에서는 350개로 설정합니다.

Ramp-Up Period는 Number of Threads에서 지정한 수만큼 Thread 가 실행되기까지 걸리는 시간입니다. 여기에서는 350개의 Thread가 1초 이내에 모두 실행되도록 합니다.

Loopback Count는 위의 Test Plan에서 설정한 변수인 LOOPCOUNT 값, 20을 사용합니다. 

이 Thread Group은 350개의 스레드가 1초 이내에 모두 실행되어 각각의 스레드에서는 이후에 설정하게 될 동작(HTTP Request 등)을 20번씩 반복합니다.


Sampler 추가 - HTTP Request

Sampler는 JMeter에서 제공하는 테스트 액션입니다. JMeter 화면 왼쪽에서 Thread Group을 마우스 오른쪽 버튼으로 클릭한 다음, Add > Sampler 아래에서 원하는 Sampler를 선택하면 됩니다. 여기서는 HTTP Request 를 선택합니다.


Sampler는 테스트 결과를 파일로 저장할 뿐 화면에 보여주지는 않습니다. 결과를 그래프나 도표로 보기 위해서는 Listener를 추가해야 합니다.


HTTP Request 설정

HTTP Request Sampler > Basic 탭의 Web Server 섹션을 다음과 같이 설정합니다.

  • Protocol [http] : http
  • Server Name or IP : 127.0.0.1
  • Port Number : 4000


HTTP Request Sampler > Advanced 탭의 Client implementation 섹션을 다음과 같이 설정합니다.

  • Implementation : HttpClient4


Config Element 추가 - HTTP Header Manager

JMeter 화면 왼쪽에서 HTTP Request를 마우스 오른쪽 버튼으로 클릭한 다음, Add > Config Element > HTTP Header Manager를 선택합니다.


HTTP Header Manager 설정

화면 하단의 Add 버튼을 클릭해 자신이 구성한 REST API가 정상적으로 수행될 수 있도록 필요한 Header를 설정합니다.

  • Name: Content-Type, Value: application/json
  • Name: Accept, Value: application/json
  • Name: Authorization, Value: Bearer <JWT 토큰 값>

Listener 추가

처리상황 및 결과를 보기 위하여 리스너를 추가합니다.

JMeter 화면 왼쪽에서 Thread Group을 마우스 오른쪽 버튼으로 클릭한 다음, Add > Listener 아래에서 원하는 Listener를 선택하면 됩니다.


View Results Tree

실제로 주고받는 데이터 및 상세한 상태를 확인하기 위해 View Results Tree 리스너를 추가합니다.

View Results Tree 리스너는 각각의 요청, 응답, 실제 데이터를 상세히 보여줍니다.

Summary Report

종합적인 데이터 확인을 위해 Summary Report 리스너를 추가합니다.

Transactions per Second

TPS 확인

Response Time Over Time

의미있는 결과를 보기 위해서 플러그인으로 제공되는 Response Time Over Time 리스너를 추가합니다.

Response Time Over Time 그래프에서 중간에 튀는 구간이 있는 것은 응답시간이 확 늘어나는 구간이 있다는 의미입니다.

Active Threads Over Time

사용자수

Bytes Throughput Over Time

N/W 사용량

Transaction Throughput vs Threads

동시접속 사용자 수에 따른 전송데이터량을 보려면 Transaction Throughput vs Threads 리스너를 추가합니다.

Response Times vs Threads

동시접속 사용자 수에 따른 응답시간의 변화를 보려면 Response Times vs Threads 리스너를 추가합니다.

사용자가 늘수록 응답시간이 늘어난다면, 아파치의 성능에 비해 로직이 무거워서 리소스 반환이 늦으므로 튜닝이 필요하다고 볼 수 있습니다.


체인코드 설치 및 인스턴스화

테스트를 위해 체인코드를 블록체인 네트워크에 설치 및 인스턴스화합니다.


ccexcc 체인코드 설치 및 인스턴스화

org1의 cli 컨테이너에서 다음 명령을 실행합니다.

peer chaincode install -l node -v 1.0 -n ccexcc -p /opt/gopath/src/github.com/chaincode/ccexcc/node/

CORE_PEER_ADDRESS=peer1.org1.honeybee.com:7056 peer chaincode install -l node -v 1.0 -n ccexcc -p /opt/gopath/src/github.com/chaincode/ccexcc/node/

peer chaincode instantiate -o orderer.org1.honeybee.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/honeybee.com/orderers/orderer.org1.honeybee.com/msp/tlscacerts/tlsca.honeybee.com-cert.pem -C honeybeechannel -n ccexcc -v 1.0 -c '{"Args":[""]}' -P "OR ('org1MSP.member','org2MSP.member','org3MSP.member','org4MSP.member','org5MSP.member','org6MSP.member')"


fabric-rest API 성능 테스트

POST 성능 확인

POST 명령에 대한 성능을 확인하기 위해 HTTP Request Sampler > Basic 탭의 HTTP Request 섹션을 다음과 같이 설정합니다.

  • Method : POST
  • Path : /channels/honeybeechannel/chaincodes/ccexcc
  • Content encoding : UTF-8

Body Data 탭에는 다음 코드를 입력합니다.

{ "peers": ["org1/peer0"] , "fcn": "registerFarm" , "args":["FARM01","농장01","경기도","닭","테스트","1964-05-20"] }

그런 다음, 상단의 Start 버튼을 클릭해 테스트를 시작합니다.


GET 성능 확인

GET 명령에 대한 성능을 확인하기 위해 HTTP Request Sampler > Basic 탭의 HTTP Request 섹션을 다음과 같이 설정합니다.

  • Method : GET
  • Path : /channels/honeybeechannel/chaincodes/ccexcc?args=%5B%22FARM01%22%5D&fcn=readAsset&peer=org1%2Fpeer0

그런 다음, 상단의 Start 버튼을 클릭해 테스트를 시작합니다.

JMeter 결과 확인

View Results in Tree

Summary Report

Summary Report의 데이터를 통해 평균 TPS를 측정할 수도 있습니다. TPS는 Transactions per Second의 약자로 초당 처리하는 트랜잭션의 갯수를 의미합니다.

TPS = 스레드 개수 / 평균 응답시간

Summary Report에서 Average 값이 평균 응답시간이고, 단위는 milisecond입니다.

위의 결과에서 스레드 개수는 350개로 설정하였고, 평균 응답시간이 13.958초이므로 평균 TPS는 350 / 13.958인 약, 25 TPS가 됩니다.

메모리 8G에 듀얼코어인 VMware에서 실행하였기때문에 TPS가 비교적 낮게 측정되었습니다.


View Results in Table

Response Time Graph

Transactions per Second

Response Time Over Time

Active Threads Over Time

Bytes Throughput Over Time




반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함