Ubuntu 에 JAVA를 설치합니다
cat >> /etc/apt/sources.list deb http://archive.canonical.com/ lucid partner ^D
apt-get update
apt-get -y install sun-java6-jre
// 라이센스 동의를 해주셔야 합니다 // Do you accept the DLJ license terms? Yes
java -version
|
Wowza 를 다운로드 받습니다.
http://www.wowzamedia.com/store.html
|
wget http://www.wowzamedia.com/downloads/WowzaMediaServer-2-1-2/WowzaMediaServer-2.1.2.deb.bin
chmod +x WowzaMediaServer-2.1.2.deb.bin
./WowzaMediaServer-2.1.2.deb.bin // 라이센스 동의를 해주셔야 합니다. Yes
|
라이센스에는 다음의 종류가 있으니 꼭 주의해서 구매하시기 바랍니다.
- 개발 라이센스 - 무료
- 서버 라이센스 - $995
- CDN, 호스팅, 서비스 용 라이센스 - 월 $65
- 아마존 EC2 용 라이센스
|
cd /usr/local/WowzaMediaServer/conf/
cat >> Server.license
// 라이센스 코드 입력
/etc/init.d/WowzaMediaServer start
// 서비스용으로 데몬 스타트시 이 방법을 사용하세요 또는
cd /usr/local/WowzaMediaServer/bin#
./startup.sh
// 이 방법일 경우 로그 보기 편하니 디버깅시 사용하세요.
|
튜닝
Wowza 의 기본 배포판은 메모리를 적게 사용하게 되어 있습니다.
가능하면 64 bit 가 지원하는 서버를 사용하시고, Out of Memory 로 시스템이 다운되는 현상을 종종 보기 싫으시다면, 메모리를 풍부하게 사용하시기 바랍니다. NIC를 본딩하고 네트워크 트래픽 Over 1Gb 이용시 , 메모리 8GB 추천드립니다
|
# java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
#cd /usr/local/WowzaMediaServer/bin
#vi setenv.sh
JAVA_OPTS="-Xmx5000M" <= 수정
// start 시 다음과 같이 5000M 로 나타나면 OK INFO server comment - Java Args[0]: -Xmx5000M
* 그래도 메모리 문제로 다운되는 현상이 발생하면, 다음 방법처럼 JAVA의 Garbage Colllection 을 사용해보세요
# setenv.sh 편집 //10번째 줄에 주석 처리된걸 제거하세요. JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseParNewGC"
* Too many files open 메세지 사용 시, 리눅스 FD 를 증가해주세요
bin 디렉토리의 wms.sh 편집 ulimit -n 65536
마찬가지로startup.sh 편집 ulimit -n 65536
Wowza 실행 시, 다음 메세지가 나오면 성공입니다.
INFO server comment - Max File Descriptor Count: 65536
사용 중인 리눅스의 FD 최대 개수는 다음과 같이 알 수 있습니다.
#sysctl -a | grep file-max fs.file-max = 797556
* 많은 VOD 파일을 액세스시에, 별도의 파티션으로 디스크를 마운트 해주세요
/etc/fstab 에 다음 옵션 추가 : rw,nosuid,nodev,noatime,nodiratime
|
CPU 를 최대한 사용하기 위하여, 여러분이 사용중인 프로세스 개수를 계산해보세요.
예를들어 요즘 쿼드코어 CPU가 주류이니, CPU 가 2장인 서버인 경우 다음과 같이 2 * 4 = 8 개의 수치가 나옵니다.
( 하이퍼쓰러드 기능 사용시 , CPU 개수가 2배가 됩니다. 비효율적이니 꺼두세요 )
기본적으로 Wowza 는 1 CPU 기준으로 설정되어 있습니다.
conf/VHost.xml 을 다음의 공식 기준으로 설정하여 주세요.
HostPort/ProcessorCount: 2x[total-core-count] (maximum of 24) IdleWorkers/WorkerCount: 2x[total-core-count] (maximum of 24)
NetConnections/ProcessorCount: 2x[total-core-count] (maximum of 24)
RTP/DatagramConfiguration/UnicastIncoming/ProcessorCount: [total-core-count] (maximum of 12) RTP/DatagramConfiguration/UnicastOutgoing/ProcessorCount: 2x[total-core-count] (maximum of 24)
RTP/DatagramConfiguration/MulticastIncoming/ProcessorCount: [total-core-count] (maximum of 12) RTP/DatagramConfiguration/MulticastOutgoing/ProcessorCount: [total-core-count] (maximum of 12)
HandlerThreadPool/PoolSize: (300x[total-core-count])/5 (maximum of 480) TransportThreadPool/PoolSize: (200x[total-core-count])/5 (maximum of 320)
|
네트워크 대여폭이 충분하다면 다음과 같이 본딩을 하여, 서버 사용률을 높이세요.
서버 한 대당 3Gb ~ 4Gb 나온다면 ~~~ -_-)b
단 일반 Progressive Download 데몬들과는 틀리게, Streaming Download 이므로 CPU 부하를 많이 먹습니다.
쿼드코어의 2CPU / 메모리는 16 GB 추천 :-)
|
/etc/modprobe.d/bonding.conf
* 다음 내용을 추가 ( mode 4 가 적용될려면, 스위치에서 802.3ad 가 지원해야 합니다. 안되면 1 로 하세요 )
alias bond0 bonding options bonding mode=4 miimon=100
/etc/network/interfaces
* eth0 부분을 제거하고, bond 드라이브 로딩
auto bond0 iface bond0 inet static address 1.1.1.1 netmask 255.255.255.192 network 1.1.1.0 broadcast 1.1.1.63 gateway 1.1.1.62 post-up ifenslave bond0 eth0 eth1 eth2 eth3 post-down ifenslave -d bond0 eth0 eth1 eth2 eth3
|
1 CPU 쿼드 코어로 테스트할때의 결과값 입니다.
500K 전송시 동접자 400 명, 트래픽 200Mbps 가 나옵니다.
밑의 atop 화면은 200 명일때 캡춰한 화면입니다. .
[ Wowza 모니터링 화면 ]

[ atop ]

자 이제 Wowza 를 사용하여, 모든 PC + 모바일폰 상에서의 동영상 재생을 즐겨봅시다.
- 윈도우CE 기반의 옴니아
- 안드로이드
- 아이폰, 아이패드