시작하며
먼저 리니지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
  1. 지나가다 2008.03.19 18:32

    다년간 서버 운영을 헛으로 하셨군요 1.센트나 데비안으로 돌려보십시오
    위 서버의 물리적 사양 반반반에 반만되어도 천명정도 우습습니다

    더 잘돌리고 언급한것 처럼 java와 mysql 이 중차대차하다면
    2.솔라리스에서 mysql 오라클로 컨버팅해서 돌려보시기 바랍니다
    그리고나서 다년간 서버운영으로 수백가지 테스트와 검증을 했다고 하기 바랍니다 ㅅㄱ

    위의 1번과 2번은 각각 동접 천~3천정도를 유지하는 외국서버입니다
    리벤지는 탈락했고, 리벤지도 솔라리스에서 mysql 오라클로 컨버팅해서운영한 서버였답니다
    동접3천정도였죠

  2. duraboys 2008.03.20 11:21 신고

    먼저 글 남겨주셔서 감사합니다
    리벤지나 기타 여러개도 경험을 해보았지만 일단 커멘트에 대한 부분을 말씀드리자면

    저 글 하단에 보시면 ASPUA 라는 분께서 적으신 글이고 대략적으로 저 분께서도
    서버운영에 대한 부분에 습자지 같은 지식은 아니라고 봐지구요

    블로그는 자유롭기때문에 그리고 개발 및 관리역시 개개인에 노하우가있기때문에
    무턱대로 헛이라고 비난하는건 조금은 잘못되지 않았나 생각을 합니다.

    저역시 솔라리스등 IBM서버 SUN서버 MS관련 솔류션등등을 직접 사용을 해보았지만
    어느게 좋다는것보단 어떻게 활용하느냐에 대한 가치가 더 중요하지 않을까 생각이 듭니다.
    물론 저는 프리서버에대한 진행을 하진 않았습니다. 다만 기업이나 그러한류에 프로젝트에서
    쉽게 말씀하시는 동접이나 데이터건수가 말씀하시는 그런 서비스류와는 많이 차이가 나겠죠
    포털로 보시면 좋겠습니다 ^^

    저분경우는 얼라이브팩을 이용해서 NT서버에 구동시를 이야기 하는것 같고 얼핏 듣기론
    얼라이브팩 개발진과 친분도 있다고 들었습니다. 그렇다고 우수한 재원이라곤 보증할수 없겠지만요

    서버에 사양도 중요하겠지만 그리고 OS등에 베이스도 중요하겠지만 더 중요한건 튜닝입니다.
    실예로 NT유저 그룹에서는 팬티엄 75로도 그정도에 성능을 낼수 있있답니다 오래전 일이지만
    언젠가부터 개발자들이 서버 자원을 어떻게 활용을 해야 하는것보다

    요즘 워낙 서버환경이 좋다보니 그 재원을 올바르게 활용을 하지 못하는 부분이 많습니다.
    뭐 저 역시 그렇텔구요
    느리거나 렉이 생기면 서버부터 증설 할려구 하는 경향이 많이 있죠 그게 빠른 답이 될테니

    저 글에 원작자와 저는 아무런 관계가 없고 저 역시 웹상에서 글을 발견하고 담아 온것입니다만 저렇게 나름 연구하고 노력하는 자제는 높이 봐줘야 하지 않을까 생각이됩니다.

    그리고 그러한 내용에는 당신에 노력에 대한 성과물도 훌륭하지만 나는 이러한 방식으로 접근을 해서 좀더 효율적인 퍼포먼스 향샹을 이끌었다는 내용에 커멘트가 달리기를 바랍니다.

    단순 OS교체와 컨버팅작업은 해결방법이 되지 않을것 같습니다.

    여튼 허접한 개인 블로그에 오셔서 글을 읽어 주신거 감사하고 커멘트까지 달아주셔서 고맙게 생각합니다.

    자주 오셔서 이런 저런 말씀 많이 해주시면 좀더 의식하고 좋은 내용에 컨텐츠를 담도록 하겠습니다 ^^

  3. justin timbalake sexy back 2008.05.23 04:24

    걸출한 뉴스!! 종류 블로그!

  4. 저도 지나가다 2008.07.07 12:21

    지나가다님의 글을보며 실력은 몰라도
    인생은 헛으로 사셨구나 생각이 드네요.
    자기 좁은 실력을 믿고 글을 개념 똥구녕으로 쓰다간
    임자 만나면 개무시 당하기 일수죠.

    댓글 개념없이 써도 개의치 않고 답글 주신 분은 정말
    고개가 숙여집니다.

  5. 지나가다 2009.02.23 21:39

    린1 프리섭도 저렇게 설정하면되나요?^^

  6. 궁금이 2009.11.02 21:49

    안녕하세요. 저는 인터넷쇼핑몰을 운영하는 사람입니다.
    제가 입주한 어느 오픈마켓은 도무지 사이트 로딩이 너무 느려서 답답..
    그래서 도대체 서버컴퓨터는 어느정도 사양이 돼야 되는지 알아보려고 검색하던 중에 님의 글을 보게 되었고요, 해박한 님의 지식에 절로 고개가 숙여집니다.
    제가 완전히 이해하지는 못하였지만, 제가 조금전에 언급한 오픈마켓의 경우 제 추측컨대, 서버 사양이 거의 개인용컴퓨터 수준 밖에는 되지 않는것 같군요.
    해당 오픈마켓의 사이트 프로그래밍은 세계 최고 수준이라고 해도 과언이 아닐 정도로 제가 아는 한 가장 잘 되어있는 우수한 프로그램으로 중무장한 오픈마켓인데도 불구하고 서버 사양이 너무 낮은 것 같아요.
    안타깝네요.
    무슨 방법이 없을까요?
    예를들어 수천, 혹은 수억씩 들여서 서버를 증설해야 하는지?
    아니면, 적든돈을 들여서 서버 증설 혹은 튜닝을 통해서 사이트의 페이지 로딩 속도를 높일 수 있는지요?
    아직 이름이 별로 알려지지 않은 오픈마켓이기 때문에 옥션이나 이름있는 오픈마켓에 비해서는 트래픽이 새발의 피 정도 밖에는 되지 않는 오픈마켓인데, 이렇게 느리답니다.
    도움이 되는 답변을 주시면 정말 감사하겠습니다.
    참고로 제가 위에 입력한 저의 홈페이지가 그렇다는 얘기가 아니구요, 제가 따로 입주해서 판매를 하고 있는 다른 오픈마켓이 그렇다는 얘기입니다.

    • duraboys 2009.11.10 10:07 신고

      개인적인 생각으론 웹서비으와 홈페이지 서버의 사양은
      그렇게 중요하다고 생각하지 않습니다.

      일반적으로 서버는 안정성이 우선이지 일반 개인 PC처럼 사양이 놓다고 양질의 서비스를 제공하지는 않습니다.

      서버는 우선 안정성이 가장 먼저이며 해당 서비스의 네트웍 대역폭이
      어떤지 봐야 하며

      접속자 대비 트래픽 발생 구간을 보셔야 할듯 합니다.

      사용자가 많은데 불필요한 디비 커넥션이나 I.O가 발생을 하지는 않는지 이런 ㅂ분을 보는게 가장 먼저 일듯 합니다.

      서버 사양은 서비스에 그렇게 큰 비중을 차지 않습니다.
      물론 굉장히 많은 접속률이나 I.O가 늘어나서 한계에 다달을 경우

      서버 증설이 필요하겠지만 말입니다.

      요즘 일반적인 서버로도 어느 정도 수순까진 커버는 가능합니다.

      물론 말씀하신 옥션이나 그런곳과는 비교가 안되겠지만 말입니다.

      그런곳은 단위가 다르기때문에... ^^

  7. SIons_Vita 2009.12.18 12:38

    글 잘읽어보았습니다..
    올해 1월초였긴하지만
    쿼드2코어 요크필드 9550 램8G 윈도우xp32비트로 1100명을 우연치 않게 수용했었습니다
    잦은 다운이있어 64비트로 교체해서 그문제는 없어졌지만요
    좋은 정보 보고 갑니다~
    Sions.kr -비타

    • duraboys 2009.12.20 17:07 신고

      이야 그런 좋은곳이 있단 말입니까

      어딘지 궁금하네요

  8. 아오 2011.05.27 02:14

    이거대로 my.ini 고쳤다가 서비스 재시작도 안되고 미치겠네
    my.ini 백업도안해놨는데 어쩔꼬요 아오

    • 오아 2011.05.30 11:45

      실력을 탓하시죠
      공유하시는 분에 대한 고마움은 생각 안하시고

  9. 와오 2011.10.07 02:51

    리니지1도 이렇게하면돼나요?

+ Recent posts