디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[서버정보] 서버 운영하면서 느꼈던 확실히 최적화 하는 방법2

ㅇㅇk(211.57) 2024.05.01 18:13:42
조회 1547 추천 33 댓글 15
														

저번에 자바 마크 서버 최적화 글 작성했던 사람인데 되게 호응 좋아서 2탄 만들어봄


이번에 해볼것은 네트워크의 최적화임

저번글과 마찬가지로 본인 경험 기준이기에 적당히 걸러들으셈


전체적인 목적은 통신 레이턴시를 줄이고, 인증서버의 에러를 줄이는게 목적임


뭔가 저번 글에 비해 생소한 단어가 많을 수 있지만 사유와 해설 다 알려줄것이니 걱정말고 읽어보면 됨


1. 자바 마인크래프트는 TCP를 쓴다

마크 서버 여는 강좌를 보면 "tcp에 25565로 열어주세요" 이런 글 많이 봤을거임

이것처럼 자바 마크는 tcp로 통신을 한다는데 그럼 tcp가 뭔지부터 짚고 가겠음

TCP는 Transmission Control Protocol로 한국어로 하면 전송 제어 프로토콜임

핵심만 짚으면 이 프로토콜은 데이터를 전송하면 해당 데이터를 잘 받았다고 "응답"을 함


클라이언트에서 서버로 "전송"을 하면 서버에서 데이터 잘 받았다고 클라이언트에 "응답"을 하고

반대로 서버에서 클라이언트로 "전송"을 하면 클라이언트에서 서버에 잘 받았다고 "응답"을 함


보통 tcp를 사용하는 경우가 언제냐면, 전송에 신뢰성, 즉 정확도가 중요한 경우에 많이 씀

예시를 들면 어떤 파일의 다운로드 및 업로드 등이 있음

물론 요즘에는 자체 구현하는 사람들도 많고 해당 프로토콜이 구리다고 하는 사람도 많은데

간편하게 정확도를 챙기며 통신하기엔 tcp가 좋긴 함


근데 게임같이 실시간과 응답성이 중요한 경우에 tcp가 적절하냐고 물으면 답은 아니오 임

왜냐하면 실시간으로 통신해야 되는데 응답을 따질 시간이 없거니와

게임이나 실시간 스트리밍처럼 데이터가 지속적으로 들어오는 경우에는 데이터 1개쯤 전송이 미스가 발생해도 그닥 손해가 없음

따라서 보통 실시간과 응답성을 따지는 경우에는 UDP라고 응답이 필요없이 데이터를 그냥 전송하기만 하는 형태의 프로토콜을 씀


그래서 비교적 최신인 마인크래프트 베드락 에디션 같은 경우에는

UDP기반의 RakNet을 사용해서 서버와 통신을 함


그럼 자바 마크는 결국 태생이 tcp라 답이 없어보이는데 어떻게 해야 되는지를 알려드림


2. Nagle 알고리즘 비활성화

아마 개빡겜 fps유저나 레이싱게임, 실시간 대전 격겜 많이 해본 사람은 Nagle 알고리즘이란걸 들어봤을거임

이게 뭐냐면 통신을 할때 데이터가 생기면 바로 전송하는게 아니라, 버퍼링으로 좀 쌓아두고 한번에 몰아서 전송하는거임

이렇게 하는 이유는 통신 횟수를 줄여서 효율적으로 데이터를 주고 받을 수 있기 때문임

근데 여기서 말하는 효율이 (보낼 데이터의 양)/(전송 횟수) 라서 응답성에선 매우 안 좋아짐


응답성이 중요하고, 지속적으로 데이터가 계속 들어오는 게임에서는 데이터를 쌓아둘게 아니라 바로바로 전송하고 받는게 당연히 이득일거임

이걸 이제 마크서버에도 적용이 가능함, 대체로 적용은 리눅스나 윈도우 다 있더라

이건 이제 맨 아래에 적어둠


Nagle 비활성에서 주의해야 될 점은

네트워크의 대역폭 사용량이 늘어난다는 것

다시 말해 전송 효율 자체는 좀 까인다는건 감수해야 함



3. Full-duplex 활성화

이건 좀 생소한 사람이 많을거임

Full-duplex란 양방향에서 통신이 동시에 이뤄지는 상황을 말하는데,

쉽게 마크서버 기준으로 설명하면 "응답"하는 김에 데이터를 "같이 전송"하는거임


그럼 여기서 의문이 하나 들거임

내가 쓰고 있는 인터넷은 업로드&다운로드 다 잘 되는데 Full-duplex가 아닌가

정답은 보통 일반적으로 아무런 세팅을 하지 않았다면 Half-duplex임

이건 양방향 통신이 되는건 맞는데 그게 동시에 이뤄지지는 않는거임

동시처럼 보이는건 걍 컴퓨터가 빨라서 통신 방향의 전환이 티가 안 나는거임

실제로는 어떻게든 차이를 두고 "전송"과 "응답"을 따로 처리함


보통 이렇게 되어 있는 이유는 아마 에너지 효율이나, 안정성 때문이긴 할거임

근데 위에서 말했듯이 실시간 통신게임에선 그닥 정확도를 과하게 따지는게 손해임


따라서 이 옵션도 활성화해주는 것임



4. 인증서버 고정

마크 멀티하던 사람들은 "인증서버가 어쩌고 해서 문제가 발생하여 넌 서버에 접속을 못합니다" 하는 메시지 많이 봤을거임

이게 참 그지같은게 내 문제도 아니고, 서버 호스터 문제도 아니고, 순전 모장의 인증서버가 문제라서 화병이 나는거임

이것의 빈도를 줄이는 방법이 있음


인증서버가 어떻게 동작을 하냐면

마크 서버가 실행이 될때 자세히 보면 자신의 환경에 관련된 로그가 뜨는데

이때 막 session.mojang.com 이런게 뜨는걸 볼 수 있는데

이게 해당 마크서버에서 모장서버에 접근할때 필요한 정보임


보통 저 링크 주소를 통해서 DNS 거쳐서 실제 모장서버에 접근을 하는데

일반적으로 마크서버 근처의 모장서버에 접근을 해서 정보를 받아옴

여기서 문제는 한국 근처 모장서버가 자주 터진다는거임

그래서 인증에러가 유독 한국 마크서버가 많이 뜨는 것임


이것을 해결하는 방법이 해당 링크 주소에서 반환되는 IP를 고정해서

물리적인 모장서버의 위치를 제일 안 터지는 서버로 고정해버리는 거임


한국 근처 모장서버가 멀쩡하든 안 멀쩡하든 난 그냥 제일 안 터지는 모장서버로 접근하기에

에러날 확률이 매우 줄어듬


그럼 위에 언급한 것들을 실제로 다 적용해볼거임



5. 실제로 다 적용하는 방법

대체로 이게 Nagle 비활성은 지원을 하는데

Full-duplex는 네트워크 환경에 따라서 지원이 안 될 수도 있음

예를 들면 와이파이는 진짜 좋은거 쓰는거 아니고는 일반적으로 Half-duplex 고정임

또, 랜선 이더넷 쓰면 대체로 Full-duplex 설정 가능하긴 함

당연히 환경은 내가 쓰던 환경 기준으로 설명함


Clear Linux

#Full-duplex, 1Gbps로 지정, 이더넷 어댑터 이름 찾는건 구글링 해보셈

sudo ethtool -s eno1 speed 1000 duplex full

#Nagle 비활성

sudo sysctl -w net.ipv4.tcp_low_latency=1


Debian

#Nagle 비활성

sudo echo "net.ipv4.tcp_low_latency=1" >> /etc/sysctl.conf

sudo sysctl -p


Windows

#Nagle 비활성

레지스트리 수정하거나 Fasta Ping 쓰셈

자료가 빈약한 이유는 내가 Window로 마크서버를 안 여는데 어떡함

#Full-duplex

장치 관리자->네트워크 어댑터 에서

내가 쓰는 랜카드를 클릭하셈

고급설정 탭으로 가서

속도 및 이중에 "전이중" 붙은걸로 바꾸고 확인 누르셈




이상으로 서버 최적화 글 2탄 마무리 하겠음

반응 좋으면 3탄도 올려봄


추천 비추천

33

고정닉 9

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기
자동등록방지

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2861 설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
256009 공지 [구매 가이드] 마인크래프트를 조금 더 싸게 구매해보자! [25] 어른이갤로그로 이동합니다. 23.11.20 17940 41
193353 공지 갤에서 운영되는 서버 확인하고 함께 즐기자 ! ! [19] Karn갤로그로 이동합니다. 22.11.06 117332 122
259943 공지 [신문고] 게시물 신고/완장한테 하고싶은말 [413] 핵미41갤로그로 이동합니다. 23.12.12 12056 14
228522 공지 [스티브 갤러리 마인크래프트 정보글 모음집] [15] 핵미41갤로그로 이동합니다. 23.05.17 125320 87
232230 공지 1.20 여정과 이야기 업데이트 내용 총정리 [2] ㅇㅇ(58.238) 23.06.08 15014 78
226451 공지 [스티브 갤러리 개발/번역 디스코드] [4] 핵미41갤로그로 이동합니다. 23.05.07 62722 66
165469 공지 스티브 갤러리 이용 규칙 [5] 핵미41갤로그로 이동합니다. 22.05.27 146027 125
286481 일반 자바21로 1.20.4 페이퍼 서버 가능? [1] ㅇㅇ갤로그로 이동합니다. 01:24 40 0
286479 창작 헤어롤 [2] ㅇㅇ(218.157) 01:16 134 3
286478 정보 소리소문없이 잊힌 줄 알았던 15주년 이벤트... [6] 삐유갤로그로 이동합니다. 01:13 224 4
286477 일반 마크는 왜 크리퍼가 얼굴마담일까 [5] ㅇㅇ갤로그로 이동합니다. 00:58 191 0
286476 일반 마크 자바 배드락인가 이거 사면됨?? 컴마크 첨하는데 [1] ㅇㅇ갤로그로 이동합니다. 00:57 79 0
286475 일반 마크 공식 쇼츠가 국내 양산형보다 재밌네 [1] ㅁㅁ갤로그로 이동합니다. 00:56 237 0
286474 커맨드 레이저 만듬 [6] ㅇㅇ(121.170) 00:42 310 1
286473 일반 Distant Horizon 모드 어떻게 적용하는거임? [3] ㅇㅇ(121.176) 00:33 90 0
286472 질문 이거 크러쉬 도움좀요.. [1] ㅇㅇ(119.202) 00:19 158 0
286471 일반 진짜 지옥이 너무어려움 [1] 이루루루갤로그로 이동합니다. 00:16 102 0
286470 질문 이거 마인콜로니 모드팩 접두사/접미사 무슨모드인지 아는사람 있음? [3] Velo갤로그로 이동합니다. 00:04 178 0
286469 일반 이번 할인이 역대급인거임?? [9] ㅇㅇ갤로그로 이동합니다. 00:03 221 0
286468 일반 단타 없냐 [3] 서라벌갤로그로 이동합니다. 00:00 131 0
286467 일반 유투브 쇼츠 영상중에 소울샌드 + 광산 수레 이용해서 빙글빙글 도는거 ㅇㅇ(222.112) 00:00 136 0
286466 일반 임베랑 오큘 둘다 모드팩에 넣기만 하면 됨? ㅇㅇ(115.138) 05.21 73 0
286464 질문 모드팩 질문 ㅇㅇ(112.144) 05.21 99 0
286463 일반 뉴비 실수로 개멀리있는 침대... [9] 레붕붕(1.227) 05.21 202 0
286462 일반 베드락에디션 번역 꼬라지 뭐임? [3] ㅇㅇ(211.36) 05.21 198 0
286461 일반 커스포지 종료코드 1 어케고침 ㅇㅇ(1.248) 05.21 182 0
286460 일반 입문할때 매직스펠보다 skillapi이 나음? [3] ㅇㅇ갤로그로 이동합니다. 05.21 92 0
286459 일반 임베디움이랑 오큘러스가 뭐임? [1] ㅇㅇ(115.138) 05.21 148 0
286458 일반 님들 하늘에서 떨어지면서 작은구멍에 홀인원하는거 [2] ㅇㅇ(114.205) 05.21 172 0
286457 일반 요즘 마튜버들은 모드팩 하드코어 100일생존이 대세임? [1] ㅁㅁ갤로그로 이동합니다. 05.21 277 0
286455 일반 옵티파인+포지인데 최적화 모드 뭐써야함? [5] ㅇㅇ(211.245) 05.21 193 0
286454 모드 이머시브 엔지니어링 refinery에 액체 잘못넣었는데 도로 못뺌? [1] ㅇㅇ(211.198) 05.21 125 0
286453 질문 픽셀몬 1.20.1 버그 ㅇㅇ(39.7) 05.21 70 0
286452 일반 형님들 cte2 Lightman's Currency 질문이요 ㅠㅠㅠ ㅇㅇ(110.10) 05.21 52 0
286451 일반 1.20 넘어가는 버전은 청크베이스랑 안맞음? ㅇㅇ(221.144) 05.21 76 0
286450 창작 [일지] 군대가기전 마지막 모드는 해파리 모드! [16] ㅇㅇ(219.240) 05.21 471 9
286449 질문 플러그인 고수님들 질문이요 [2] ㅇㅇ갤로그로 이동합니다. 05.21 121 0
286448 질문 주민 거래 패널티 언제 풀림? ㅇㅇ갤로그로 이동합니다. 05.21 83 0
286447 단타서 겜케베 온힛패치 테스트 [13] ㄷㄷㄷㄷ갤로그로 이동합니다. 05.21 315 2
286446 질문 지도 모드 저니맵 크기 줄이는 키가 뭐지................. [1] ㅇㅇ(124.51) 05.21 82 0
286445 일반 님들 폰트리팩 머씀 [5] ㅇㅇ(223.38) 05.21 145 0
286443 일반 이거 이렇게 뜨면서 안깔리던데 어케해야됨? ㅇㅇ(117.110) 05.21 123 0
286442 일반 형님들 1.20.4 에서는 낚시 플러그인은 안돌아가는건가요? ㅇㅇㅇ(180.80) 05.21 104 0
286441 일반 트위치 망토 나만 별로냐 [1] ㅇㅇ(118.235) 05.21 184 0
286440 일반 보루잔해랑 네더유적 뜨는거 랜덤임? ㅇㅇ(210.216) 05.21 75 0
286439 일반 메인클래스에 어떻게 써야하나요? 스갤러(222.118) 05.21 135 0
286437 일반 크로마엔드리스2 진짜 지랄맞네 ㅇㅇ(183.97) 05.21 83 0
286436 일반 눈동자 모드 테스트 [2] 백두산잡초갤로그로 이동합니다. 05.21 319 0
286435 일반 ㅅㅂ 스카이블럭 하는데 떠돌이상인 도저히 안나와서 ㅇㅇ(175.194) 05.21 117 0
286434 일반 낚시 플러그인 물고기 종류많은거 어디없나 ㅇㅇ갤로그로 이동합니다. 05.21 73 0
286433 일반 좋은말로할때 코블몬 다시 열어라 ㅇㅇ(125.128) 05.21 35 0
286432 일반 유튜브에 ㅈ되는 건축 많네 ㅇㅇ갤로그로 이동합니다. 05.21 110 0
286431 일반 메가랑 자이언트 지형 차이가 머임 [1] ㅇㅇ(39.120) 05.21 102 0
286430 단타서 예약)죠죠 맵 테스트 [1] ㅇㅇ(125.184) 05.21 218 0
286429 연재 노미팩토리 CE - 염소, 에틸렌, 서킷 자동화 dd(222.103) 05.21 111 0
286428 일반 베드락 방패어케씀? [4] ㅇㅇ(121.175) 05.21 210 0
286427 질문 모바일 마크 뉴비 질문 [7] 초보(14.49) 05.21 167 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2