일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 패턴 인식
- 고려대학교
- 빅데이터
- hopfield network
- 가상화
- Neural Network
- 나르왈프레오
- SSM
- Friendship
- 패턴인식
- 신경망
- 삼성
- 멤버십
- 물걸레자동세척로봇청소기
- 물걸레로봇청소기추천
- Python
- 하이퍼바이저
- 동아리
- 갤럭시탭S8울트라
- 파이썬
- 삼성소프트웨어멤버십
- Google App Engine
- 신경회로망
- Bidirectional Associative Memory
- 구글 앱 엔진
- BAM
- 인공지능
- 증강현실
- NarwalFreo
- 삼성전자 소프트웨어멤버십 SSM
- Today
- Total
정보공간_1
[6기 수원 김병연] Node.js Server Testing 본문
지난화에서는 Node.js 클라이언트를 테스트 해 보았는데
Node.js 서버에 대한 부하 테스트를
어떻게 진행 해야 할 것인가에 초점을 맞추어 보겠습니다.
Node.js를 사용하신다면 웹소켓을 사용하실 일이 많으실 것 같은데
검색결과 국내에 JMeter-웹소켓 테스트 정리한 자료가 없어서
이번에는 Node.js 서버 - 웹소켓 테스트에 대해 정리해 봅니다.
가장 보편적으로 쓰이는 로그인으로 예를들어 테스트를 해보겠습니다.
1. JMeter는 다음 페이지에서 다운 받을 수 있습니다.
http://jmeter.apache.org/download_jmeter.cgi
2. JMeter Websocket
Kawasima 씨가 만드신 JMeter 플러그인을 다운 받습니다.
https://github.com/kawasima/jmeter-websocket
또는 소스코드 빌드가 귀찮으신 분은 Jar파일을 직접 다운 받으시면 됩니다.
-maven 3.0 으로 빌드되었습니다.
https://dl.dropboxusercontent.com/u/89045969/jmeter/ApacheJmeter_websocket-0.1.0-SNAPSHOT.jar
-With Dependencies
https://dl.dropboxusercontent.com/u/89045969/jmeter/ApacheJmeter_websocket-dist-0.1.0-SNAPSHOT.jar
3. 다운받은 jar파일을 \apache-jmeter\lib\ext 에
집어넣은 후, JMeter를 실행.
4. Thread Group 을 생성합니다.
생성한 Thread Group을 선택하면
Number of Threads (몇개의 Thread를 만들 것인지.)
Ramp-Up Period (Thread 당 생성 시간)
Loop Count (하나의 Thread가 해당작업을 몇 번 수행 할 것인지.)
항목이 있습니다.
예를들어,
Number of Threads를 100
Ramp-Up Period를 100
Loop Count를 100
으로 설정해서 돌리면 Thread가 초당 하나씩 100개 까지 생성되면서
각각 작업을 100번씩 수행하겠죠? 그럼 10000번 수행하게 됩니다.
그럼 Ramp-Up Period를 0으로 설정하면?
100개의 Thread가 0초 즉 동시에 생성되어 작업을 수행합니다.
이것도 10000번 수행하게 됩니다.
즉 Ramp-Up Period를 작게 설정하면 Throughput이 더 나올 거고
테스트에 걸리는 시간이 더 단축될겁니다. 서버에는 부하가 더 가해지겠죠.
5. 웹 소켓 샘플러를 생성합니다.
6. CSV Data Set Config 생성
먼저 설명을 좀 드리면 제 웹소켓 서비스 제공 서버는 Node.js 입니다.
받은 요청을 '/' 로 스플릿 하여 어떤 서버측 함수를 호출 했는지 구별하고,
서버측 내부 함수(reqLogin)에 파라미터로 '/' 이후 부분을 넘겨주는 식입니다.
다양한 값을 테스트해보기 위해 데이터 셋을 만듭니다.
물론 Send message 부분에 직접 값을 박아서 해도 됩니다.
${ID} 와 ${PW} 부분에 실제 데이터를 집어넣으시면 되는거죠.
(잘 안보이시는분, Send message 에
reqLogin/{"ID":"${ID}","PW":"${PW}"} 라고 적혀있습니다.)
자 이제 CSV Data Set Config를 생성합니다.
생성한 CSV Data Set Config 를 눌러서
Filename 부분에는 csv 파일경로(txt파일도 가능합니다.)
Variable Names(comma-delimited) 에는 ID,PW 라고 적습니다.
csv 파일은 이런식으로 구성 하면 됩니다.
테스트를 실행하면 id1,pw1 로 로그인을 시도하기 시작하는데요
일단 잠깐..
5. View Results Tree를 생성합니다.
테스트 후 결과를 보기위한 리스너를 달아줍시다.
View Results Tree를 생성해 요청 및 반환값을 확인합니다.
단, 여기에는 중요한 이슈가 있습니다.
많은 Thread Group을 돌릴 경우에, View Results Tree 때문에
느려지는 현상이 있습니다. 심하면 에러율이 100%까지 올라가며 JMeter가 멈춥니다.
이걸 몰라서 고생을 좀 했네요.
7. Summary Report 생성
Thread Group들의 테스트 결과를 보기위해 요약 리포트를 생성합니다.
쉽게 에러율과 Throughput 등을 확인 할 수 있습니다.
8. 시작, 비우고 시작
재시작 하실땐 비우고 하셔야 테스트가 제대로 됩니다.
검정색이 시작, 붉은색이 비우는겁니다.
9. 테스트 결과
Number of Threads를 100
Ramp-Up Period를 1
Loop Count를 100
으로 테스트 한 결과입니다.
(Constant Throughput Timer를 단 후 20만 정도의 적당한 값을 설정하면
더 높은 Through put 이 나오기도 합니다.)
이렇게 JMeter와 플러그인을 이용하면 웹소켓 서버를 테스트 해볼 수 있습니다~!
'IT 놀이터' 카테고리의 다른 글
[6기 부산 박천경] mixare(증강현실) opensource 분석 #1 (0) | 2014.10.26 |
---|---|
[6기 부산 박천경]SDL (Simple DirectMedia layer) #3 (0) | 2014.10.09 |
[6기 수원 김병연] Node.js 디버깅 및 실제 함수의 동작 이해 (0) | 2014.09.05 |
[UX research] 사용자 리서치를 간략하게 설명해봅시다. (0) | 2011.07.02 |