[{"data":1,"prerenderedAt":232},["ShallowReactive",2],{"docs-page-tutorials\u002Fminecraft\u002Fbring-minecraft-server-to-ludicrous-speed":3},{"id":4,"title":5,"body":6,"category":222,"deprecated":223,"description":224,"extension":225,"meta":226,"navigation":227,"path":228,"seo":229,"stem":230,"__hash__":231},"docs\u002Fko\u002Ftutorials\u002Fminecraft\u002Fbring-minecraft-server-to-ludicrous-speed.md","Minecraft 서버 성능 최적화하기",{"type":7,"value":8,"toc":207},"minimark",[9,21,26,32,39,48,51,55,66,70,76,84,87,91,114,119,122,125,129,142,145,155,166,173,177,180,188,192,199],[10,11,12,13,16,20],"p",{},"이 문서에서는 Minecraft의 성능을 최적화하기 위한 꿀팁들을 소개합니다.",[14,15],"br",{},[17,18,19],"code",{},"Is Server Overloaded"," 와 같은 메세지가 뜬다면 하나씩 적용해 보는 것을 추천드려요.",[22,23,25],"h2",{"id":24},"paper-사용","Paper 사용",[10,27,28,29,31],{},"플러그인이 Paper와 호환 된다면, Paper로 바꾸는 것을 추천드려요.",[14,30],{},"\nSpigot을 사용하고 계신다면, 버킷 교체만으로 성능을 끌어올릴 수 있는 최고의 방법이니, 바꿀수 있다면, Paper로 변경하는 것을 적극 추천합니다.",[22,33,35,38],{"id":34},"timings-를-통한-tick별-함수-호출-내역-조회",[17,36,37],{},"timings"," 를 통한 tick별 함수 호출 내역 조회",[10,40,41,42,44,47],{},"(Spigot 계열 (ex. Paper 등)) 에서 지원하는 기능입니다.",[14,43],{},[17,45,46],{},"\u002Ftimings"," 명령어를 통해 tick 마다 돌아가는 함수등을 통해, 어느 플러그인이나 작업이 렉을 유발하고 있는지 찾아내 최적화를 진행 할 수도 있습니다.",[10,49,50],{},"만약 어렵다면, 주변의 Java 개발자에게 분석을 요청해 보는 것도 방법이예요!",[22,52,54],{"id":53},"서버-내부-최적화","서버 내부 최적화",[10,56,57,58,60,65],{},"서버 내부에서 사용하는 자원을 더욱 최적화 할 수 있습니다.",[14,59],{},[61,62,64],"a",{"href":63},"\u002Ftutorials\u002Fminecraft\u002Ffurther-optimizing-smp-servers","야생 서버 최적화하기"," 문서를 확인해 보세요.",[22,67,69],{"id":68},"java-업그레이드-및-jvm-변경","Java 업그레이드 및 JVM 변경",[10,71,72,73,75],{},"Java의 경우 버전이 변경되면서 최적화가 개선이 되거나, 로직이 개선이 되는 경우가 있습니다.",[14,74],{},"\n플러그인이나 버킷의 호환성 문제가 없는 경우 나에게 맞는 최적의 런타임으로 변경하는 것을 권장합니다.",[10,77,78,79,83],{},"Java 설치 및 런타임 변경 방법은 ",[61,80,82],{"href":81},"\u002Ftutorials\u002Fminecraft\u002Finstall-guide\u002Fjava","여기"," 에서 확인이 가능합니다.",[10,85,86],{},"혹시 Hotspot 기반의 JVM을 사용 중이라면, OpenJ9으로 JVM을 변경해 보는 것도 좋은 방법이예요. (플러그인 호환성 문제가 발생할 수 있으니, 바꾸기 전에 백업 하는 것을 추천드려요)",[22,88,90],{"id":89},"jvm-flag-설정","JVM Flag 설정",[10,92,93,94,104,105,113],{},"우리 모두가 손쉽게 접할 수 있는 JVM 종류는 ",[61,95,99,103],{"href":96,"rel":97},"https:\u002F\u002Fopenjdk.java.net\u002Fgroups\u002Fhotspot\u002F",[98],"nofollow",[100,101,102],"strong",{},"Hotspot"," (Oracle Hotspot)",": Oracle Java를 사용하고 있습니다.\n이러한 경우에는 Aikar's Flag를 사용할 수 있겠지만, JVM 종류가 만약 ",[61,106,109,112],{"href":107,"rel":108},"https:\u002F\u002Fwww.eclipse.org\u002Fopenj9\u002F",[98],[100,110,111],{},"Eclipse OpenJ9"," (IBM J9)","를 사용하고 있다면, 또 다른 방법으로 접근을 해야됩니다.",[115,116,118],"h3",{"id":117},"왜-jvm-flag를-설정해줘야-되나요","왜 JVM Flag를 설정해줘야 되나요?",[10,120,121],{},"마인크래프트 특성상 메모리를 많이 사용하기에, Garbage Collector 에 대한 설정을 진행하면, GC가 훨씬 원활하게 작동하여, 서버가 더욱 잘 작동하게 하기 위하여 JVM Flag를 설정합니다.",[10,123,124],{},"이 설정은 JVM의 종류 (예. Hotspot, OpenJ9) 별로 차이가 나므로, 아래 내용을 확인해 주세요",[115,126,128],{"id":127},"jvm-flag-hotspot-jvm","JVM Flag: Hotspot JVM",[10,130,131,132,134,135,138,139,141],{},"Paper를 사용하는 경우 ",[17,133,46],{}," 에서 표기되는 ",[17,136,137],{},"Aikar's Flag"," 가 가장 유명합니다.",[14,140],{},"\n(필수 선행 조건: Java의 버전이 8 이상 이어야 합니다.)",[10,143,144],{},"아래에 있는 JVM Flag는 Aikar's Flag입니다.",[146,147,152],"pre",{"className":148,"code":150,"language":151},[149],"language-text","java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https:\u002F\u002Fmcflags.emc.gs -Daikars.new.flags=true -jar paperclip.jar nogui\n","text",[17,153,150],{"__ignoreMap":154},"",[10,156,157,158,161,162,165],{},"위에 표기된 플래그는 10GB 메모리를 기준으로 작성되었습니다. 만약 사용할 수 있는 메모리가 더 적다면, ",[17,159,160],{},"-Xms10G","와 ",[17,163,164],{},"-Xmx10G"," 부분을 가용 가능한 메모리에 맞춰 수정하시는 것을 권장 드려요!",[10,167,168,169],{},"출처: ",[61,170,171],{"href":171,"rel":172},"https:\u002F\u002Faikar.co\u002F2018\u002F07\u002F02\u002Ftuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft\u002F",[98],[115,174,176],{"id":175},"jvm-flag-openj9","JVM Flag: OpenJ9",[10,178,179],{},"OpenJ9을 사용하는 경우, Minecraft에 적합하도록 Garbage Collector를 수정 하는 것 외에, 환경에 따라 사용할 수 있는 JVM 설정 플래그가 추가로 제공됩니다.",[10,181,182,183,187],{},"OpenJ9에서 할 수 있는 최적화의 경우, 이 ",[61,184,186],{"href":185},"\u002Ftutorials\u002Fminecraft\u002Ffurther-optimizing-openj9-jvm-for-minecraft","문서","를 참고하세요.",[22,189,191],{"id":190},"windows-vm을-사용-중인-경우-linux으로-운영체제-교체","Windows VM을 사용 중인 경우, Linux으로 운영체제 교체",[10,193,194,195,198],{},"서버용 ",[17,196,197],{},"Linux","의 경우 기본적으로 CLI 환경만 제공을 하고 있기에, 기본적으로 운영체제를 구동하기 위한 오버헤드가 Windows 보다 낮습니다.",[10,200,201,202,204],{},"더욱 빠른 성능을 원한다면, Linux로 변경하여, 운영체제에서 사용 하고 있는 자원을 최소화 하는 방법이 있습니다.",[14,203],{},[100,205,206],{},"Stella IT의 VM의 경우 Linux로 사용시 Full Virtualization (전 가상화) 이 아닌 ParaVirtualization (반 가상화) 모드로 구동 되므로 성능 향상을 기대할 수 있습니다",{"title":154,"searchDepth":208,"depth":208,"links":209},2,[210,211,213,214,215,221],{"id":24,"depth":208,"text":25},{"id":34,"depth":208,"text":212},"timings 를 통한 tick별 함수 호출 내역 조회",{"id":53,"depth":208,"text":54},{"id":68,"depth":208,"text":69},{"id":89,"depth":208,"text":90,"children":216},[217,219,220],{"id":117,"depth":218,"text":118},3,{"id":127,"depth":218,"text":128},{"id":175,"depth":218,"text":176},{"id":190,"depth":208,"text":191},"Stella IT Console\u002FMinecraft",false,"Minecraft 서버의 성능을 더욱 최적화 하는 방법을 소개합니다.","md",{},true,"\u002Fko\u002Ftutorials\u002Fminecraft\u002Fbring-minecraft-server-to-ludicrous-speed",{"title":5,"description":224},"ko\u002Ftutorials\u002Fminecraft\u002Fbring-minecraft-server-to-ludicrous-speed","KRx1Je1m7Mk3bNOYC4vrRezVp5usZ6UAHcA3Cbp4M7U",1783152353925]