1. 서버 사양 선택 가이드


우선 짚고 넘어가야할 건, 마크서버는 90% 싱글코어만 갈구는 방식을 사용하고 있다. 아무리 최적화를 하더라도 코어 하나 갈구는건 직접적으로 해결 불가능하다.

대부분 1개의 코어가 서버 청크 로딩, 엔티티 연산등을 담당하고 다른 코어들은 기타 부수적인 작업을 하게된다.

이를 해결하려면 여러가지 방법이 있는데 첫번째로 플러그인이나 최적화 모드를 사용하는 법이다. 특정 연산을 다른 코어로 할당시키는 플러그인이 있는걸로 기억하는데, 이게 도움이 될거다. 포지는 확실히 있음. 이후에 적어줌

두 번째로 월드를 분리하는 거다. 가을서버가 대표적인 예시인데, 번지코드를 이용해서 복수의 서버를 열은 다음 서버끼리 연동시켜놓은 방식을 사용하는걸로 안다. 대규모 서버들은 대부분 이 방식을 사용하는 걸로 알고있다.

세번째가 CPU를 처음부터 잘 선택하는건데, 이건 경우에 따라 다르다.


1-1. 서버 컨셉, 예상 유저 수 파악하기

우선적으로 파악해야 할건 서버가 어떤 컨셉을 사용할 것인지 정하는거다. 기본적으로 모드서버를 열지, 기본 생야생을 열지, 플러그인 서버를 열지 정하는게 가장 중요하다.



일단 생 야생서버를 열 때는 이정도 사양정도면 충분하다. ( 100% 확실한건 아니다. 대부분 긁어모은 자료다. )


모든 기준은 VIew Distance 10, 제로틱 레드스톤 없을때다.


LAN서버(생야생서버)


1~4 명일 경우 : Intel Core Duo 또는 AMD Athlon 64 x2, RAM 1GB, 150MB 월드 저장공간 정도


5~10명일 경우 : Intel Core Duo 또는 AMD Athlon 64 x2 RAM 2GB 200MB 월드 저장공간 정도


10명 이상 : Intel Core i7 - 4790K or AMD Ryzen 5 1600 RAM 4GB 200MB SSD


마크 위키에서 긁어왔다. 근데 체감상 맞는거같음


플러그인 서버


10+ : 3.0+Ghz CPU RAM 8G+ 10MB/S 이상 네트워크


이때부터 네트워크가 조건으로 걸리는데, 대부분 가정집은 적어도 100MB/s 이니 넘기지만 호스팅은 유의해야 한다. 8~10명을 한번에 한 곳으로 이동시킬때 약 12~15MB/s 가 든다고 한다. 즉 클라이언트는 0.5초 이상의 랙이 걸린다는거임.


50+ : 4.0+Ghz CPU, RAM 20GB+ , 100MB/s 네트워크



모드서버


10+ 3.0+Ghz CPU, 4GB +, 100MB/s 이상 네트워크


모드서버는 플러그인보다 사양이 낮은대신, 네트워크를 매우 높게 차지하는데 이는 모드서버는 전송하는 패킷이 매우 많기 때문이다. 체감상 6명일때 적어도 26.3MB/s를 사용했었음

또한 모드서버는 플러그인서버와 비교해서 최적화등이 더 잘되어있는점을 감안한 것 같다.


50명 이상은 이거 안볼거니 안적음


간단하게 요약하자면


1. 마크서버는 깡코어가 중요함

2. 하지만 싱글코어는 절대 안됨. 플러그인이나 모드를 사용할경우 멀티스레딩 지원되는 모드나 플러그인이 매우 많다.

3. 램은 최저램, 최고램을 동일하게 (니 램 자원이 좆도 부족할때)



2. 서버 KICK 메세지 목록


이건 서버, 클라이언트 모두 도움이 될 정보다. 약간 자가진단법이라 보면됨


End Of Stream (클라이언트 메세지) - 서버가 클라이언트에게 데이터 전송을 중단한 경우 발생. 대부분 클라이언트나 서버 인터넷 문제거나 서버가 터졌을 때 발생

Internal Server Error:java.net.Minecraft - 서버에서 알 수 없는 데이터를 보냈을 때 발생. 대부분 서버가 모드서버일 경우 발생함.

Internal exception:java.io.IOException: Recieved string length longer than the maximum allowed ([숫자]>256) - 클라이언트가 보낸 채팅 메세지가 서버에서 설정한 최대 글자 수를 초과했을때 발생.

Internal Server Error - 클라이언트에서 보낸 데이터를 처리하는데 예외가 발생했을 경우, 대부분 클라이언트와 서버의 데이터가 일치하지 않을때, 즉 세부 모드 내용(컨픽등)이 다를때 발생함

Disconnected - 플레이어가 접속을 종료함.

Illegal characters in chat - 서버에서 금지된 채팅 코드등을 사용함. 예시 : §

disconnect.spam - 클라이언트가 너무 많은 채팅을 짧은 시간내에 보냄.

Read time out - 서버가 플레이어의 연결 상태를 확인할 수 없음.

Bad login - 비정품 유저가 정품전용 서버에 접속할 경우 발생, 인증서버 문제 또는 클라이언트가 인증서버에 연결하지 못해 유저가 인증된 유저인지 알 수 없을경우도 발생

Outdated client (Please use {버전}) - 클라이언트가 서버보다 버전이 낮을경우 발생

Outdated server (I'm still on {버전}) - 서버가 클라이언트보다 버전이 낮을경우 발생

You are banned from this server - 밴당함

You have been IP banned - IP밴당함

Kicked by an operator - 킥당함

Flying is not enabled on this sever - 서바이벌 모드 또는 모험모드에서 5초간 비행을 시도할 시 발생

Attempting to attack an invaild entity - 모드등을 이용해 자기자신을 공격할 때 발생

Illegal stance - 클라이언트가 너무 높거나 낮은 Y축에 있을경우 발생

Illegal position - 클라이언트가 X/Z +-30,000,000 에 있을경우 발생

You have died, Game is over man, it's game over! - 하드코어 서버에서 죽은 다음 다시 접속하려 할 시 발생

You have been Idle for long! - 잠수

You are not whitelisted on this server - 화리섭, 너화리 없음

Disconnected by Server. Invailed session. (Try restarting your game) - Bad login 과 같음

Cannot resolve hostname - 해당된 주소에 매칭된 서버가 없음.

보이면 더 추가함