AB 테스트 결과 로그 파일과 그래프 이미지 변환하기
AB 테스트를 통해 성능을 측정하고 해당 결과를 로그 파일로 저장한 후, 이를 그래프로 변환하는 과정을 소개합니다. 이 글에서는 AB 테스트를 수행하는 방법, 로그 파일 포맷 설명, 그리고 gnuplot을 사용하여 그래프로 변환하는 방법을 단계별로 설명합니다.
AB 테스트 수행 및 로그 파일 생성
먼저, AB 테스트를 수행하여 결과를 로그 파일로 저장합니다. 다음 명령어를 사용하여 AB 테스트를 실행합니다:
ab -T application/json -n 1000 -c 100 -p post.json -g result.plot
위 명령어는 100명의 동시 사용자가 1000번의 요청을 보내며, post.json
파일을 요청 본문으로 사용하고, 결과를 result.plot
파일로 저장합니다.
로그 파일 포맷
생성된 로그 파일의 내용은 다음과 같은 형식을 갖습니다:
starttime seconds ctime dtime ttime wait
Fri May 22 17:45:00 2020 1590137100 9 157 165 27
Fri May 22 17:45:00 2020 1590137100 8 159 167 25
Fri May 22 17:44:13 2020 1590137053 7 161 167 23
Fri May 22 17:44:13 2020 1590137053 8 160 168 28
Fri May 22 17:44:49 2020 1590137089 9 159 168 24
Fri May 22 17:46:18 2020 1590137178 10 161 172 27
각 열의 의미는 다음과 같습니다:
- starttime: 요청 시작 시간
- seconds: 시작 시간의 UNIX 타임스탬프
- ctime: 연결 시간, 서버와 소켓을 오픈하는 시간
- dtime: 처리 시간, 서버 작업 시간과 결과 반환 시간을 포함
- ttime: 요청 수행 시간 (ttime = ctime + dtime)
- wait: 서버 사이드 처리 시간 (네트워크 시간 = dtime - wait)
gnuplot을 사용한 그래프 이미지 변환
생성된 로그 파일을 바탕으로 gnuplot을 사용하여 그래프로 변환합니다. 다음은 두 가지 gnuplot 스크립트를 사용하여 그래프를 생성하는 방법입니다.
gnuplot_script_type_a.sh
첫 번째 스크립트는 요청 번호를 X축, 응답 시간을 Y축으로 하여 선 그래프로 표시합니다:
# 이미지 사이즈
set terminal png size 1024,768
# 가로, 세로 비율
set size 1,0.5
# 결과 파일명
set output "result.png"
# 범례/key 위치
set key left top
# y grid line
set grid y
# Label the x-axis
set xlabel 'requests'
# Label the y-axis
set ylabel "response time (ms)"
# Tell gnuplot to use tabs as the delimiter instead of spaces (default)
set datafile separator '\t'
# Plot the data
plot "result.plot" every ::2 using 5 title 'response time' with lines
exit
위 스크립트를 실행하면 다음과 같은 그래프가 생성됩니다:
gnuplot_script_type_b.sh
두 번째 스크립트는 시간을 X축, 응답 시간을 Y축으로 하여 포인트 그래프로 표시합니다:
# 이미지 사이즈
set terminal png size 1024,768
# 결과 파일 명
set output "result.png"
# 범례/key 위치
set key left top
# y축 grid line
set grid y
# x축 데이터 지정
set xdata time
# input time format
set timefmt "%s"
# x축 time format 시:분:초
set format x "%H:%M:%S"
# Label the x-axis
set xlabel 'H:M:S'
# Label the y-axis
set ylabel "response time (ms)"
# 구분자로 탭을 사용
set datafile separator '\t'
# Plot the data
plot "result.plot" every ::2 using 2:5 title 'response time' with points
exit
위 스크립트를 실행하면 다음과 같은 그래프가 생성됩니다:
결론
이 글에서는 AB 테스트 결과를 로그 파일로 저장하고, 이를 gnuplot을 사용하여 그래프로 변환하는 과정을 설명했습니다. gnuplot 스크립트를 통해 간단하고 효과적으로 데이터를 시각화할 수 있습니다. 이를 통해 서버의 응답 시간을 분석하고 성능을 향상시킬 수 있는 유용한 인사이트를 얻을 수 있습니다.
'개발' 카테고리의 다른 글
[티스토리] 티스토리 블로그 구글에서 검색 할 수 있도록 사이트맵 등록하기 (0) | 2020.10.29 |
---|---|
[kubernetes] 쿠버네티스란? (0) | 2020.07.03 |
[Docker] docker-compose로 서버 구축 nginx + python ( flask + uwsgi ) (0) | 2020.05.21 |
virtualbox install error (0) | 2020.05.19 |
AB (Apache HTTP server benchmarking tool)를 활용하여 부하 테스트(API TEST) 하기 (0) | 2020.03.23 |