개발

[gunplot] gnuplot 사용하여 ab test 결과 시각화(그래프) 하기

vipDeveloper 2020. 5. 27. 14:31
반응형

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 스크립트를 통해 간단하고 효과적으로 데이터를 시각화할 수 있습니다. 이를 통해 서버의 응답 시간을 분석하고 성능을 향상시킬 수 있는 유용한 인사이트를 얻을 수 있습니다.

반응형