시작하며
먼저 리니지2 사설서버를 많은 분들이 구축하고 운영하고 있지만 대부분의 사람들이 서버의 랙과 오류의 원인 및 각종 버그들을 서버팩이나 유저를 탓하는 실정이 너무나 안타깝습니다. 기본적으로 리니지2 서버팩의 소스는 Java와 MySQL를 기반으로 제작된 것임을 많은 분들이 알고 계시듯, 서버의 설정중 가장 중요한 것은 위 두가지 프로그램의 구동 설정입니다. 앞으로 여기에 쓰게 될 방법론의 주는 위 두가지 프로그램의 설정이오니 자세히 검토해보시길 바랍니다.

1. 서버컴퓨터의 사양 선택
1천명 내외의 동접 인원이 접속한다는 가정하에 1천명을 랙없이 소화 가능한 서버 컴퓨터의 사양을 추정해보겠습니다.
CPU 제온 쿼드코어 5335
RAM 6기가 이상
HDD 스카시나 사스급 70G이상
NETWORK 100메가 광랜이상(업로드 50M 속도이상)
4가지 설정 모두 최하 요구 사항입니다. 다른 것은 나두더라도 시퓨사양은 더 높여주면 좋습니다. 현재 제가 쿼드쿼어 5310 시퓨 2개가 장착된 서버를 운영해본 결과 동접 900명 이상 접속시 시퓨 사용률이 약 50% 전후가 됩니다. 위 5335 1개의 시퓨로 동접 900명이 넘을시 약 70%전후가 될 뜻 하군요. 시퓨 점유률 약 80%이상 상외하면 막대한 랙을 유발하게 되므로 유의하시길 바랍니다.

2. 서버의 OS 선택

기본적으로 동접 1천명이 가능한 서버를 운영할려면 자바의 램할당량을 4기가 정도로 설정하셔야 하며 서버컴퓨터의 램이 6G이상은 되어야 가능합니다. 그래서 4기가 밖에 인식하지 못하는 32비트 OS에서는 자바의 램할당이 1536메가 밖에 되지 않으므로 동접 인원이 이삼백명을 넘어가면 잦은 몹다운 현상과 랙을 동반하게 됩니다. 그러므로 본인의 서버가 앞으로 동접 1천명 전후로 유지된다는 전망을 하시는 분들은 반드시 OS를 64비트로 선택해야 합니다. 그래서 윈도우 서버 20003 64비트 OS를 추천합니다. 위에 언급한 자바 램할당량은 아래에서 다시 설명하겠습니다.

3. 서버컴퓨터 기본 설정

3.1 윈도우 기본 설정 중 비활성화 항목
서버 컴퓨터에서 OS가 사용하는 기본 설정 중 반드시 제거해야 하는 항목은 윈도우 자동 업데이트와 윈도우 시간 자동 업데이트 이 두가지를 반드시 비활성화 하셔야 합니다. 윈도우 자동 업데이트는 업데이트 데이터 다운로드시 막대한 랙을 유발할 수 있으며 시간 자동 업데이트는 게임내 시간이 변경됨으로 인해 좌표버그 및 각종 버그를 유발하게 됩니다.

3.2 윈도우 프로세스 사용계획 및 가상메모리 설정
내컴퓨터/속성/고급/성능/설정/고급에 들어가서 프로세서 사용 계획 및 메모리 사용 계획을 프로그램으로 선택합니다. 그리고 가장메모리는 4기가 정도 설정합니다.

4. MySQL의 설치 방법
MySQL의 데이터 기록 엔진에는 여러가지가 있는데 대용량 데이터 처리에 가장 효율적인 InnoDB 엔진을 사용하여 데이터베이스를 설치하도록 합니다. 아래는 설치 화면중 하나이며 해당 화면에서 InnoDB 엔진 사용을 선택할 수 있으며 두번째것을 선택하여 설치합니다.

선택후 MySQL이 설치된 경로에 가면 my.ini 파일이 있을 겁니다. 이 파일이 MySQL를 구동하는 각종 옵션이 설정된 파일 입니다. 해당 파일을 열어서 아래와 동일한 부분을 아래의 값으로 변경합니다.
default-storage-engine=INNODB
max_connections=1510
query_cache_size=0
table_cache=3020
tmp_table_size=256M
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=16M
innodb_buffer_pool_size=1024M
innodb_log_file_size=512M
innodb_thread_concurrency=60
아래 두부분은 맨아래에 추가로 삽입합니다.
memlock
innodb_file_per_table
이제 MySQL을 재시작하기 위해서 제어판에 있는 서비스 항목을 열어서 MySQL를 찾아 중지를 선택합니다. 중지를 선택하고 나서 다시 MySQL이 설치된 폴더 아래 data 폴더로 가면 ib_logfile0, ib_logfile1 이 파일 두개가 있을 겁니다. 처음 설치시 생성된 파일이며 해당 파일을 삭제하고 나서 다시 서비스 항목에서 MySQL를 시작합니다. 그러면 MySQL 설정이 완료되었습니다. 위 세부 설정의 항목은 검색해서 지식을 쌓으시길 바랍니다.

5. 서버 구동 컨피그 설정
아래의 설정은 활성화시 랙을 유발하게 되는 설정이므로 죽이거나 비활성화를 시킵니다.
options.properties - MaxDriftRange = 0 # 몬스터 이동 반경
altsettings.properties - AutoLearnSkills = False # 자동 스킬 습득 유무 설정
다음은 options.properties 파일내에 스레드 사용 계획의 설정입니다.
ThreadPoolSizeEffects = 50
ThreadPoolSizeGeneral = 65
UrgentPacketThreadCoreSize = 10
GeneralPacketThreadCoreSize = 20
GeneralThreadCoreSize = 20
AiMaxThread = 20

6. Java 구동 옵션 튜닝
게임서버.bat 파일을 메모장으로 열어서 구동 옵션 설정을 아래와 같이 변경합니다.
java -server -Dfile.encoding=euckr -Xmx4096m -Xms2048m -Xmn1024m -XX:PermSize=256m -XX:SurvivorRatio=8 -Xnoclassgc -XX:+AggressiveOpts net.sf.l2j.gameserver.GameServer
맨처음 언급했던 것과 같이 이곳에서 자바 구동 램 할당 및 구동 옵션을 설정합니다. 이것도 마찬가지 자세한 세부사항은 검색을 해보시길 바랍니다. -_-;;

마치며
이것으로 동접 1천명이 접속을 하여도 랙이 없는 서버의 설정 방법에 대한 글을 마칩니다. 위 설정을은 다년간의 서버 운영으로 수백가지 테스트와 검증을 거쳐서 추출된 데이터 입니다. 다소 어려운 부분이 많은 것을 사실이나 동접 900명이 넘어도 랙하나 없던 서버를 운영했던 설정이니 모르는 부분이 있으면 검색을 통해서 지식을 넓혀나가길 바랍니다. 저또한 최초의 시작은 검색으로 인해 하나하나 배우기 시작해서 저런 설정 값을 유출해 낸 것이니까요. 그럼 모두 건승하시길 바랍니다.


post by ASPUA

+ Recent posts