성능 테스트 기법 (1) Server Monitoring

Updated:

성능 테스트 Project 지원 일정에 변동이 생긴 덕분(?)에 잠시 시간이 생긴 관계로, 성능테스트 기법에 관한 연재글을 시작해 보도록 하겠습니다.

1. 성능 테스트 시작하기

Tech Blog에서 홍성진 수석님이 ‘Introduce to Performance test’ 연재글을 통해 종합적인 관점으로 잘 설명해 주신 ‘성능 테스트 프로세스’ 및 관련 개념 전반에 대한 이해를 가지고, ‘성능 테스트 자동화 도구’에 대한 기본적인 사용법을 익혔다면, 이제는 실제 현장에서 성능테스트를 수행해 볼 수 있는 최소한의 준비가 되었다고 볼 수 있는데요.

Project 현장에 참여하여 성능 테스트를 수행하려고 보면, 다양한 Biz Domain과 신기술 및 인프라 환경에 대한 빠른 이해가 필요한 것 뿐만 아니라, 비교적 짧은 기간(2~3주) 내에 계획, 설계, 스크립트 작성, (야간)수행, 결과분석 및 보고서 작성 등을 신속하게 수행해야 하는 업무 특성 때문에, 항상 ‘낯선 환경’에서 느껴지는 긴장감이 생길 수 밖에 없습니다.(특히, 성능 테스트 요청 시점이 Open을 1~2달 앞두고 있는 상황인 경우가 많아서, 공간적으로도 고객과 Project팀 서로 간에 예민하게 날이 서 있는 분위기인 경우가 많습니다.)

이러한 긴장감 속에 진행되는 여러 성능 테스트 단계들 중에서도, ‘스크립트를 작성’하고 ‘성능 테스트를 수행’하는 과정은, 정확한 수행을 완료한 후 (의미있는) 측정 결과 Data를 기반으로 공식적인 결과서를 작성해야 한다는 점 때문에, 그 준비 과정과 수행 과정 모두 중요하면서도 심리적인 부담이 될 수 있습니다.

이번 연재 글에서는 성능 테스트를 막상 시작하려고 할 때, 진행 중간 중간에 ‘여기서 어떻게 해야하지?’라고 (스스로) 긴장되고 막힐 수 있는 (소소하지만 다음단계로 넘어가기 위해서는 중요한) 부분들에 대해 하나씩 정리를 해보려고 합니다.(실제로, 제가 최근 Silk Performer나 Cloud환경 기반 성능테스트, VPN 및 보안기반 접근환경 등에서 ‘궁금했던 상황’들과, 이에 대해 경험이 많으신 홍성진 수석님으로부터 그때 그때 친절한(!) 가이드를 받았던 내용들이 중심이 될 것 같습니다.)

오늘 첫번째로 다룰 주제는, TPS 및 Response Time과 함께 ‘성능 테스트 결과서’를 구성하는 주요 결과 Data들 중 하나인, ‘서버 자원 사용율’ 그래프에 관한 것입니다.

성능 테스트 도구에서 서버 자원 사용 현황을 실시간으로 모니터링하고 그 결과 그래프 및 데이터를 얻는 방법에 관해 알아보도록 하겠습니다.

2. Server Monitoring 개요

성능 테스트가 시작되어 부하가 지속되는 동안, 성능 테스트 자동화 도구들은 Dashboard 화면을 통해 확인 가능한 실시간 서버 자원 모니터링 기능을 함께 제공하고 있습니다. 사전 정의된 측정지표별로 서버 자원 사용율에 대한 그래프 현황을 실시간으로 보여주는 기능입니다.

MicroFocus

Source: MicroFocus

사전에 설계된 다양한 Workload Model에 기반하여 부하가 지속될 때, 서버 자원에 대한 실시간 모니터링이 가능하게 되면, WEB, WAS, DB 서버별로 부하 배분이 정상적으로 수행되는지, 안정적인 자원 사용 수준을 유지하고 있는지, 혹시 서버 자원이 부족하지는 않은지 등을 성능 테스트 도구의 Dashboard를 통해 실시간으로 확인할 수 있습니다.

또한, TPS 및 Response Time 정보 등과 함께 자원사용율 그래프를 실시간으로 관찰하면서, 성능 테스트 수행의 지속여부를 판단할 수 있습니다.(ex. 정상적으로 성능테스트가 수행되어 목표달성의 결과로서 정리될 수 있는지, 과부하 현상으로 인해 응답성능 지연이 발생하여 수행 중단 후 튜닝/최적화가 필요한 상황인지 등)

Silk Performer

성능 테스트 수행 시 관찰된 자원 사용율 그래프들은, 테스트가 종료된 후 자동화 도구가 제공하는 다양한 결과 파일과 함께 종합적으로 수집되어 결과서에 그래프와 함께 요약되어 정리됩니다.

결과서 예시

3. 수행 환경별 측정 제약사항

성능 테스트 자동화 도구에서 WEB, WAS, DB 등 서버 자원에 대한 모니터링 기능을 제공한다고 해서, 현실적으로 모든 성능 테스트 대상 환경에서 쉽게 측정이 가능한 것은 아닙니다. Project가 처한 환경에 따라 손쉽게 자동화 기능을 최대한 사용할 수 있기도 하지만, 여러 보안 이슈들로 제약이 많은 경우에는 서버별로 각각의 로그 수집 및 결과 그래프 편집을 위해 수작업이 팔요하기도 합니다.

1) 신규 Project 환경

신규 Project에서 ‘신규 장비’를 도입한 상황이고, WEB, WAS, DB 서버 접근에 대한 제약이 아직 없는 상태라면 업무를 수행하기 가장 좋은 상황입니다. 서버별 자원 모니터링이 가능한 접근 계정을 발급받아 성능 테스트 자동화 도구에 서버별 모니터링을 설정하면, 성능 테스트 수행시 종합적인 모니터링 및 측정 Data를 자동 수집/분석하는데 있어 가장 수월한 진행이 가능합니다.

2) (보안 이슈가 있는) 운영 환경

한편, 측정 대상이 현재 운영중에 있는 환경인 경우에는, 보안 이슈 등으로 인해 계정발급 제한, 원격접근(Port Open 포함) 제한, 별도 접근통제 솔루션(Hi-TAM 등) 기반 서버접근 요구 등으로 인해, 성능 테스트 도구 자체에서 제공하는 모니터링 기능을 사용하기 힘든 경우가 많습니다.

이러한 경우에는, 실시간 모니터링의 역할은 WhaTap과 같은 APM 도구가 담당하면서 진행 중 정보를 공유하게 되고, 결과서에 정리하기 위한 서버자원 모니터링 Data는 각 서버별로 별도의 로그를 남기는 작업을 수행해야 합니다.성능 테스트가 종료되면 해당 로그를 (보안 절차에 맞게) 전달받아 엑셀 기반의 그래프로 변환한 후, 자동화 도구에서 제공하는 분석 데이터들과 함께 결과서에 포함하여 정리하는 작업을 수행하게 됩니다.

3) Cloud 환경

SK 주식회사 C&C의 Cloud Z의 경우, 서버 자원 Monitoring 기능으로 Visualize Tool인 ‘Grafana’를 제공하고 있습니다. (Grafana는 metric 데이터를 시각화, 알림 서비스 기능을 제공하는 오픈 소스 모니터링 도구입니다.) Project별 URL과 계정을 받아서 접속하면, 바로 System Dashboard 기능을 이용해 서버자원 모니터링 수행이 가능합니다.

Silk Performer

Source: Cloud Z 모니터링 사용자 가이드(Grafana)

이를 이용하여, 성능 테스트 수행 중 서버 자원을 실시간 모니터링하고, 종료 후 수행 시간대별 모니터링 결과를 가공하여 아래와 같이 결과서에 담을 수 있습니다.

Silk Performer

성능테스트 도구와 통합된 환경이 아니기는 하지만, 각 서버별로 운영환경에 로그를 남기는 수작업에 비하면, URL 접속만으로 훨씬 간편하게 성능테스트 대상 Cloud 서버의 실시간 모니터링 및 결과 수집을 할 수 있어 편리합니다.

4. Silk Performer에서의 모니터링 설정 예시

우선, 아래와 같이 서버 모니터링을 위한 사전 준비가 완료되었다고 가정하고, 예시로서 Windows 서버 대상으로 ‘Silk Performer’에서 제공하는 기능에서 설정하는 방법에 대해 Localhost를 대상으로 진행해 보겠습니다.

[사전 준비사항]

  • 대상 서버명 및 물리 IP 확보
  • 자원 모니터링 계정 확보(Admin 계정 등)
  • Controller PC에서 해당 서버로 로그인 가능 확인
  • Remote Registry 서비스 실행 및 방화벽 오픈(Conteroller → 대상서버)
  • Remote Procedure Call(RPC) 서비스 실행 방화벽 오픈(Conteroller → 대상서버)
  • Perfmon 서비스 오픈
  • 사용자 계정 컨트롤 끄기(UAC)
  • Server 서비스 실행

1) Configure Monitoring

Silk Performer Workbench를 실행한 후, 상단의 Workflow Bar 메뉴들 중 중앙에 있는 ‘Configure monitoring’ 버튼을 클릭하면, 아래와 같이 팝업창이 뜨게 됩니다. 중앙에 세개의 메뉴 버튼이 있는데, 이들 중 ‘Use custom monitoring’을 클릭합니다.

Silk Performer

2) Data Source Wizard

이때, Silk Performer Explorer가 자동 실행되면서, ‘Data Source Wizard’ 팝업이 뜨게 됩니다. 기본적으로 선택이 되어있는 ‘select from predefined Data Sources’를 확인하고, 다음을 클릭합니다.

Silk Performer

3) System Selection

사전 정의된 다양한 Data Sources 중에, 우리가 모니터링하고자 하는 Operating System Data 중에 Windows System(perfmon)을 선택하고, 다음을 클릭합니다.

Silk Performer

4) Connection Parameters

연결하고자 하는 대상 서버의 Hostname, User ID, PWD 등을 기입한 후, 다음을 클릭합니다.(여기서는 Localhost를 대상으로 진행하므로, 세부정보 기입없이 진행합니다.)

Silk Performer

5) Select displayed measures

이제 모니터링할 수 있는 각종 측정지표들이 나타는데, Memory, CPU Processor, Phisical Disk에 대해 모니터링 하고자 하는 세부 측정지표들을 선택할 수 있습니다. 선택이 완료되면 하단의 마침 버튼을 클릭합니다.

Silk Performer

이때, 아래와 같은 팝업이 뜨면서 선택한 값들을 현재의 창에서 보여줄 것인지 여부를 물어보는데, ‘아니오’를 선택하면 측정값을 보여주는 새로운 차트를 생성해 줍니다.

Silk Performer

6) Monitor Chart

설정 작업이 완료되면, 아래와 같이 Monitor Chart에서 우리가 정의한 측정지표들에 대해 실시간 모니터링을 기반으로 그래프를 그려나가면서, 대상 시스템에 대한 측정 Data들을 보여주고 있는 것을 확인하실 수 있습니다. Silk Performer

5. 성능모니터(Perfmon)기반 Data 수집 예시

성능 테스트 도구가 탑재된 Conntroller PC와 모니터링 대상 서버간의 연동을 통해 자원사용율을 끌어오는 것이 불가능한 환경의 경우에는, 각각의 대상 서버별로 자원사용율에 대한 로그를 남긴 후, 해당 Data를 이용해 엑셀에서 그래프로 전환하여 결과서에 반영할 수 있습니다.

여기서는 Windows 서버에서 기본적으로 제공하는 성능 모니터를 이용해 자원 사용율 로그를 CSV 파일로 저장한 후 활용하는 방법에 대해 간단히 설명해 보겠습니다.(인터넷에 이미 Perfmon 관련 자세하고 좋은 설명 글들이 많아서 생략할까 했지만, 혹시 검색하기 ‘귀찮으신’ 분들이 있을 것 같아서 사용 방법에 대한 요약글을 정리해 보았습니다.^^)

1) Perfmon 실행

시작 > 실행 > 열기 에서 ‘perfmon’을 실행하거나, 아래와 같이 왼쪽 하단의 검색창에서 perfmon을 입력하여 나오는 ‘성능 모니터’를 클릭하여 실행합니다.

Perfmon

2) 데이터 수집기 집합 새로 만들기

성능 모니터 화면에서, 성능 > 데이터 수집기 집합 > 사용자 정의 화면에서 마우스 우측을 클릭하여 데이터 수집기 집합 새로 만들기를 선택합니다.

Perfmon

3) 수동으로 만들기

데이터 수집기 집합의 이름을 기입하고, ‘수동으로 만들기(고급)’을 선택한 후 다음을 클릭합니다.

Perfmon

4) 데이터 로그 - 성능 카운터

데이터 로그 만들기 유형들 중, ‘성능 카운터’를 선택하고 다음을 클릭합니다.

Perfmon

5) 성능 카운터 추가

추가 버튼을 클릭하여, 사용가능한 카운터를 보여주는 팝업을 띄운 후 모니터링하고자 하는 카운터를 선택한 후 하단의 추가 버튼을 클릭합니다.

Perfmon

6) 로그 저장 위치 설정

수집된 로그 파일을 어디에 저장할지 위치를 설정해 줍니다.

Perfmon

7) 파일 저장

‘데이터 수집기 집합에 대한 속성 열기’를 선택한 상태에서 마침을 클릭합니다.

Perfmon

8) 일정 지정

‘속성’ 팝업의 ‘일정’ Tab에서, 로그가 기록되는 시작 날짜, 만료날짜, 시작 시간, 요일 등을 선택해 준 후 확인을 클릭하면니다.

Perfmon

9) 로그 형식 지정

로그 파일이 저장되는 형식을 지정해 주기 위해, 데이터 수집기 집합의 이름을 오른쪽에서 마우스 우클릭으로 선택한 후 나타나는 메뉴들 중 ‘속성’을 선택해 줍니다.

속성 팝업의 ‘성능 카운터’ Tab에서 좌측 하단에 보면 ‘로그 형식’이 나타나는데, 클릭하여 자세히 보면 몇가지 종류를 선택할 수 있습니다.

Perfmon

로그 형식에는 쉼표로 구분, 탭으로 구분, SQL, 이진 등이 있는데,

  • ‘쉼표로 구분’을 선택하면 우리가 원하는 csv 파일로 저장되어 엑셀에서 열수 있게 됩니다.
  • ‘탭으로 구분’을 선택하면 TXT파일로 저장됩니다.
  • ‘이진’을 선택하면 Windows Binary Performance Log File인 BLG파일로 저장되어 Perfmon에서 열수 있습니다.

Perfmon

10) 기록 시작 및 중지

저장된 데이터 수집기 집합의 실행을 위해서는 마우스 오른쪽 버튼을 눌러 접근한 후 ‘시작’을 클릭해줍니다. 종료시에도 동일하게 접근해서 ‘중지’를 눌러 줍니다.

Perfmon

11) BLG파일의 CSV 변환

참고로, BLG 파일로 저장된 로그파일을 열면 아래와 같이 결과를 보여줍니다. BLG 파일로 저장된 로그의 경우에도, 다시 CSV 파일로 변환할 수 있습니다. Perfmon

BLG로 저장된 파일을 CSV 파일로 변환시키기 위해서는, 관리자 권한으로 CMD를 실행한 후, 명령어를 통해 변환 작업을 실행하면 됩니다.

C:\ > Relog DataCollector01.blg –f csv –o perform.csv

Perfmon

12) CSV 파일 로그

CSV 파일로 저장된 로그를 엑셀을 통해 열어보면, 아래와 같이 나타납니다. 좌측에는 년월일시분초가 표시되어 있고, 사전 정의된 카운터별로 측정 데이터가 구분 표기되어 있는 것을 보실 수 있습니다.

Perfmon

13) 그래프 추출

성능 테스트 수행이 종료되고, 로그 데이터 파일을 내 컴퓨터로 옮겨온 후, 결과서에 사용할 그래프를 추출하는 작업을 수행합니다. 성능 테스트 수행 중에 시작시간과 종료시간을 매번 기록해 놓기 때문에, 해당 시간대에 맞게 최종 결과로 사용할 Data 구간을 선택해서, 원하는 성능카운터(ex. Processor Time)에 대한 시간대별 그래프를 아래와 같이 생성해 주면 됩니다.

Perfmon

이상으로 성능 테스트 수행시 서버 자원을 모니터링하는 방법과, 실시간 모니터링이 어려운 환경에서 대상 서버별로 로그파일을 남기고 그 결과를 그래프로 변환하여 결과서에 사용하는 방법에 대해 알아보았습니다.

6. 마무리 글

성능 테스트 업무 수행시에는 짧은 일정에 여러가지 업무상의 변수들도 많고, 성능 테스트 수행 뿐만 아니라 준비과정에서 Project팀들과도 많은 협업이 필요하기 때문에, 가급적 2인 1조로 구성하여 성능 업무를 수행하시면 효율적인 진행이 가능합니다. 특히, 각자가 생각하고 경험해온 실무적인 배경이 다르기 때문에, 성능 테스트 담당자들이 협업하는 과정에서 시너지가 나는 것을 경험하실 수 있습니다.

다음 글에서는, 성능 스크립트를 작성하는 데 있어 고려할 사항들(ex. Customize session handling, Parameterize input data 등) 에 대해 정리해 보도록 하겠습니다.

[끝]