자료실

효율적인 리소스 모니터링: PerfMon과 Photon Server
작성자 | admin 2021-05-03  |    조회수 : 1782  


효율적인 리소스 모니터링: PerfMon과 Photon Server

일반적으로 저희가 Photon Server를 사용하거나 일부 시스템 서비스를 사용할 때, 해당 프로그램이나 서비스에 얼마나 많은 리소스가 할당되고 소모되었는지, 또는 시스템 내 차지하는 소모량이나 입력 시 이상 또는 문제 발생 여부에 대해 알고 싶어 합니다.

Photon Server SDKWindows 시스템에 연결된 간단하면서도 강력한 도구로, 시스템 내 수치 변화를 모니터링할 수 있고, 프로그램 개발자가 설치한 일부 카운터를 시스템에 표시하거나 로그 데이터 파일로 기록한 후, 문제가 발생한 곳을 다시 분석하거나 시스템과 프로그램의 전반적인 성능을 조정합니다.

이제부터 Photon 서버 작동 시 데이터 수치 도표를 편리하고 효율적으로 보는 방법에 대해 알아보겠습니다!

PerfMon

PerfMon은 Windows 시스템에서 오래전부터 사용해오던 시스템 성능 모니터링 도구로, 해당 기능을 Performance Monitor GUI라 부릅니다. 즉, 컴퓨터 그래픽 기능을 사용하는 사용자 인터페이스인 동시에 내부에서 다수의 데이터 수치 카운터를 선택할 수 있고 시스템에서 도표로 표시해줍니다.


검색 기능에서 PerfMon을 입력하면 성능 모니터의 데스크탑 응용프로그램을 찾을 수 있습니다.

Windows 검색창(돋보기 모양)으로 PerfMon 성능 모니터의 데스크톱 응용프로그램을 찾아 확인해보세요!

정상적으로 PhotonControl을 실행하고 나면 PerfMon CountersStart PerfMon으로 간단하고 신속하게 PerfMon 프로그램을 실행할 수 있습니다.

그림 예시:



작동후 GUI 도표에는 성능 모니터 중에서 한 기능만 표시되기 때문에, 우선 일부 텍스트 설명을 살펴보겠습니다. 하단의 그림을 보면서 계속 진행해볼까요?



미리 설정한 카운터값 - Processor Time

위 그림 좌측의 옵션에서 선택: 성능 → 모니터링 도구 → 성능 모니터로 이동하면 미리 설정한 도표에 프로세서의 데이터가 표시되며 수치가 실시간으로 업데이트됩니다. 이곳에서 CPU, 네트워크 소켓, TCP/UDP 전송값, 메모리 데이터 판독 기록, 파일 처리 카운터값과 같은 정보를 추가해 시스템에 미리 설정한 카운터를 관찰할 수 있습니다.

추가로 실행한 Photon Server는 결코 Windows 시스템에서 제공하는 애플리케이션이 아니기 때문에, 설치 방식으로 관련 카운터를 추가할 수 있으며 불필요한 카운터는 삭제할 수 있습니다.

Photon Server Counters

Photon Server에서 서버 작동 시 수십~수백 가지의 카운터를 제공해 서버 운영 시 네트워크에서 전송하는 Http/TCP/UDP bytes In/Out, 온라인 사용자 수, 전체 룸 수, 서버 대 서버, MAX 전송 데이터 등 상태의 수치 정보를 관찰할 수 있습니다.

Photon Server Counters 설치

PhotonControl이 정상적으로 작동하면 PerfMon Counters → Install Counters에 Photon Server에서 제공하는 모든 카운터가 Windows 성능 모니터 내부에 설치됩니다.




Photon Server Counters 삭제

설치 후 Photon Server가 필요하지 않을 경우 설치한 카운터를 삭제해 시스템 리소스를 절약할 수 있습니다. 삭제 방법도 복잡하지 않게 처리 가능해 PhotonControl → PerfMon Counters → Remove Counters를 실행하면 바로 삭제할 수 있습니다!

Photon Server에 설치한 카운터 모니터링

Photon Server에서 제공하는 Counters를 설치했다면 성능 모니터에서 Ctrl+N을 눌러 "카운터 추가" 기능 옵션을 불러올 수 있습니다. 좌측의 "사용 가능한 카운터"에서 Photon Socket Server 전체 주요 항목을 찾을 수 있고, 항목마다 클릭해 세부적인 카운터를 확인하거나 가장 하단의 "설명 표시" 버튼을 눌러 카운터별 설명을 확인할 수 있으므로 카운터를 통해 기록되는 내용을 쉽게 이해할 수 있습니다!


가장 먼저 Photon Server 내의 한 인스턴스(애플리케이션) :LoadBalancing(MyCloud)을 작동했기 때문에 LoadBalancing을 선택 항목에서 볼 수 있습니다. 여기서 우선 Photon Socket Server에서 카운터 하나를 선택해 시험해보겠습니다. Connections Active를 선택하겠습니다.


좌측에서 선택하면 우측으로 추가됩니다. 확인을 클릭하면 GUI 도표의 업데이트 화면에서 추가된 카운터값을 볼 수 있습니다. (파란색 선으로 표시) 단, 현재 Connections Active값은 0이어야 합니다. 아래의 그림에서 보이는 3:41:20 전의 시간대는 당사의 서버가 아직 접속되지 않았음을 의미합니다.



파란색 선은 Connections Active 실시간 접속자 수입니다.

이어서 PhotonControl의 LoadBalancing(MyCLoud)에서 Run TestClient(LoadBalancing)로 테스트해볼 수 있습니다. 해당 테스트 프로그램을 작동하면 이미 작동시킨 LoadBalancing을 여러 클라이언트/피어와 연결하려고 시도할 것입니다. 자세한 방법은 서버 설치 및 소개 내용을 참고하세요.

Photon Server 소개 및 설치

TestClient를 작동하고 나서 여러 Client 중 한 개가 연결 접속에 성공하면 카운터값 증가를 확인할 수 있습니다. 위 도표를 보시면 3:41:20 후에 열 개 정도가 연결 접속에 성공했습니다.

얼마 동안 실행한 후 TestClient의 Enter 버튼을 클릭하면 모든 연결을 로그아웃하고 접속을 종료합니다. 그렇기 때문에 3:42:10 후부터 접속자 수가 0까지 감소했음을 확인할 수 있습니다.

이 방법으로 특정 시간대의 시스템 서비스 실시간 접속자 수를 전체적으로 파악할 수 있습니다. 만약 피어와의 접속자 수가 불일치하거나 갑자기 접속자 수가 대폭 증가 또는 하락할 경우 최대한 빨리 문제 원인을 처리하거나 제거해야 합니다. 문제 발생 원인을 찾고 이를 통계 자료로 삼아 사용자가 선호하는 로그인 시간대 등의 분석에 사용할 수 있습니다.

아주 쉽게 이해되는 예시죠?

Logging Sets

데이터를 실시간으로 관찰하고 싶지 않고 지속적인 시스템 GUI 업데이트로 시스템 리소스를 낭비하고 싶지 않다면, 혹은 우선 기록한 후 나중에 다시 카운트 데이터를 조회하고 싶다면 어떻게 해야 할까요? 이럴 때에는 PerfMon이 제공하는 로그 파일을 활용할 수 있는데, 로그 파일은 장시간 카운터 추적에 매우 적합한 요소입니다!

Logging Set 설치, 기록 시작, 기록 중지, 삭제 등 기능은 모두 PhotonControl에서 찾을 수 있습니다. 아래 그림을 참조하세요.



Logging Set 설치, 시작, 종료, 삭제 기능 선택

Logging Sets 설치

위 그림과 같이 PhotonControl에서 PerfMon Counters→ Create Logging Set를 선택하면 PerfMon 내 데이터 수집기 집합에 한 사용자가 정의한 로그 파일이 추가됩니다. 미리 설정된 명칭은 photon_perf_log입니다.

실제 파일 위치도 아래 화면에서 조회할 수 있습니다. 이 예처럼 C:\PerfLogs\Admin 하위 폴더에 위치하고, 구축한 시간을 파일명으로 사용하기 때문에 여러 개로 구분해 기록할 수 있습니다. 따라서 시간이 지난 후에도 시간대별로 편리하게 분석하고 조회할 수 있습니다!

photon_perf_log의 내용을 클릭해서 조회하면 모든 Photon Server와 관련된 카운터가 기록하려는 데이터 패키지로 모두 추가되었음을 확인할 수 있습니다. 이렇게 많은 데이터를 원하지 않는다면 수동으로 변경할 수도 있고, 일부 카운터를 추가하거나 제거하고, 기록 시간 간격 등을 변경할 수 있습니다.

로깅 시작 및 정지

위 과정은 단지 데이터를 수집하는 콜렉션 레코더를 구축하는 절차일 뿐, 시스템에 기록하는 작업을 시작한 것은 아니기 때문에 PhotonControl → PerfMon Counters → Start Logging을 통해 레코더를 작동시켜 기록을 시작할 수 있습니다. 샘플링 기록을 중지하려면 Stop Logging을 선택해서 시스템 데이터 기록을 바로 중지할 수 있습니다.

Logging Set 제거

나중에 기록 파일을 정리하고 싶다면 선별 선택을 거쳐 가장 불필요한 파일부터 삭제할 수 있으며, 간단하게 PerfMon Counters → Remove Logging Set를 선택해 Photon Server와 관련된 카운터 데이터 수집기를 바로 삭제할 수 있습니다. 이런 과정을 통해 시스템 공간 리소스를 절약할 수 있습니다!

로그 파일을 열어 데이터 보기

기록 파일이 존재하면 해당 파일을 클릭해서 파일 내부에 기록된 카운터 도표 자료를 볼 수 있습니다. 파일 용량이 클 경우 시스템이 처리할 때까지 기다리면 수치를 표시할 수 있는 GUI 도형 자료로 전환해 보여줍니다. 바로 이전에 본 실시간 도표 자료처럼 분석 연구에 참고할 만한 시간과 수치 변화 기록을 보여주는 도형 자료가 준비됩니다.

위에 언급한 과정을 종합해보면 Photon 서버 작동 성능도 굉장히 쉽게 모니터링할 수 있겠죠?! 또, 매우 간결한 재통합으로 Windows 서비스 플랫폼에서 GUI 디스플레이 모니터링으로 수치를 쉽게 확인할 수 있고 장시간에 걸쳐 수치 변화를 기록할 수도 있습니다.

시스템이나 서버 서비스 문제의 간편한 실시간 처리, 작동 시 성능의 이상 변화나 장애 요소 찾기, 게임 서비스 품질 개선, 이 모두가 게임 개발과 운영에 있어 매우 중요한 부분을 차지합니다. 그뿐만 아니라 PowerShell로 일부 스크립트를 작성해 시스템 운행 시 부하를 조회할 수 있어 좀 더 심도 있게 동적 성능을 분석할 수 있습니다.

이후 고급 단계 문서에서도 서버 응용 프로그램과 개발에 관련된 주제가 계속해서 언급될 예정이니 기다려 주세요!


출처 : Hu 씨의 Photon 블로그 이야기 (대만)