본문 바로가기

Wowza

[DOC][성능튜닝] 와우자 스트리밍 엔진 성능 튜닝과 자바 설정 튜닝

와우자 스트리밍 엔진 성능 튜닝


기본적으로 와우자 스트리밍 엔진 매니저는 아래 보이는 URL을 통해 접근 가능하다

http://[wowza-ip-address]:8088/enginemanager

스트리밍 엔진 매니저에서는 페이지의 상단 서버텝을 클릭하고 내용 패널의 성능 튜닝을 클릭한다. 성능 튜닝 페이지에서 서버 OS 구조를 보여준다. 스트리밍 엔진이 사용하는 메모리의 양, 시스템의 코어 프로세스의 갯수, 자바 버전 등이다. 



와우자 스트리밍 엔진 자바 설정을 튜닝

 기본적으로, 와우자 스트리밍 엔진 소프트웨어는 지원가능한 버젼의 자바와 작동 중인 하드웨어에 맞게 튜닝된 상태로 자동 인스톨 된다. 서버는 자바 셋팅의 조정으로 스트리밍 엔진을 튜닝 할 수 있다.


 와우자 스트리밍 엔진 자바 설정에 접근하려면 웹 화면의 자바 설정을 클릭한다. 자바 설정 페이지는 현재의 설정 정보를 보여주는데 자바 힙 사이즈라던지, 와우자 스트리밍 엔진에 할당된 메모리에 양과 가비지 컬랙션 설정 정도를 확인 할 수 있다. 



자바 힙 사이즈

 기본으로 설정된 자바 힙사이즈는 개발 레벨이다. 제품 환경에 서버 전용으로 작동하는 것은 제품 레벨로 자바 힙 사이즈를 설정한다. 

 높은 메모리를 점유하는 다른 서비스들이 작동 중인 서버라면 자바 힙 설정을 커스텀 레벨로 변경하고 싶을 것이다. 만약 64비트의 자바 가상환경과 4기가 그 이상의 PC 환경에서 작동중이라면 자바 힙 사이즈를 3기가와 5기가 사이로 설정 할 수 있다. 적어도 16기가 램을 확보하고 있다면 힙 사이즈를 8기가로 설정한다. 10기가로 힙 사이즈를 설정하지 말자. 그렇게 되면 아주 긴 가비지 컬렉션의 사이클과 그로 인한 멈춤 현상이 생길 것이다. 


자바 가비지 컬렉션 설정

 자바의 가비지 컬렉션 튜닝은 좀 골 때리다. 어떤 설정이 최고의 설정이든 시행작오와 서비스 피드백을 통해 우리가 추천하는 몇몇의 방법을 제시한다.  


G1(Garbage First) Collector - 가비지 컬렉터 우선

 처음으로, 기본 튜닝인 G1을 추천한다. 수정이 요구되지 않으면서 많은 스트리밍 상황에서도 잘 작동하는 방식이다. G1 컬렉터는 낮은 지연 시간을 보장과 대용량의 어플리케이션을 위해 디자인 되었다. 이런 서버 스타일 가비지 컬렉터는 큰 메모리의 멀티 프로세스 컴퓨터와 오라클 JDK 7 Update 4와 그 이후 버젼을 완벽하게 지원하는 것을 목표로 한다.

Note 

 커스텀 컬렉터 설정 G1 컬렉터의 GC 정지 시간은 조정 할 수 있다. 아래의 커스텀 셋팅을 제안한다. 

-XX:+UseG1GC -XX:MaxGCPauseMillis=100


Concurrent Collector

 Concurrent collector는 짧은 GC 정지 시간과 어플리케이션이 작동중 일 때 프로세스 자원을 가비지 컬렉터와 공유하기 위한 목적으로 설계되었다. 


Note 

만약 메모리 사용량 증가와 같은 자바 힙에 관련된 문제에 대해 경험이 있다면, 커스텀 컬렉터 셋팅에 Concurrent collector를 위해 커스텀 가비지 컬렉션 설정을 명시할 수 있다. 아래와 같은 커스텀 셋팅을 제안한다. 

-XX:+UseConcMarkSweepGC -XX:NewSize=512m


NewSize는 자바 힙 사이즈에 따라 달리한다

 - 만약 자바 힙 사이즈가 5000MB 또는 더 높다면 NewSize=512MB

 - 만약 자바 힙 사이즈가 3000MB 에서 5000MB라면 NewSize=256M

 - 만약 자바 힙 사이즈가 3000MB 보다 낮다면 NewSize=128M


NUMA-aware allocator

 NUMA 

  불균일 기억 장치 접근(Non-Uniform Memory Access, NUMA)는 멀티프로세서 시스템에서 사용되고 있는 컴퓨터 메모리 설계 방법중   의 하나


 NUMA-aware allocator는 어플리케이션의 성능 최적화를 가능하게 한다. 그것들은 일반적으로 다중 물리 CPU 소켓들이 포함된 컴퓨터들이다. 기본적으로는 이 옵션인 사용되지 않게 되어 있고 이 옵션은 오직 병렬 가비지 컬렉터가 사용될 때 사용 가능하다.


예를 들어, 다중 CPU 소켓 시스템의 NUMA 최적화를 허용하는 것은 아래의 커스텀 셋팅을 따라하면 된다. 

-XX:+UseParallelGC -XX:+UseNUMA


Monitoring GC pause times

 가비지 컬렉터의 정지 시간을 모니터링 위해 텍스트 에디터에 [install-dir]/conf/Tune.xml]를 열고 <VMOption> 옵션을 추가한다. 


<VMOptions>

<VMOption>-server</VMOption>

<VMOption>-Djava.net.preferIPv4Stack=true</VMOption>

<VMOption>-verbose:gc -Xloggc:"${com.wowza.wms.AppHome}/logs/gc_${com.wowza.wms.StartupDateTime}.log" -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime</VMOption>

</VMOptions>

그리고 변경사항을 반영하기 위해 와우자 스트리밍 엔진을 재시작한다.


Note 

 - 이 프로퍼티는 Tune.xml 파일의 33번째라인에서 확인 할 수 있다. 이 항목을 둘러싸고 있는 주석을 제거하고 추가하자.

 - 윈도우 운영체제에서는 이 프로퍼티는 디버깅을 위해 로그파일을 생성한다.     gc_${com.wowza.wms.StartupDateTime}.log 파일은 오직 서비스 모드나 커맨드 라인으로 와우자 미디어 서버가 시작    될 때 생성된다.