Can't keep up! Is the server overloaded? Running Xms behind, skipping Y tick(s)마인크래프트 서버 콘솔에 나타나는 경고로, 한 틱을 처리하는 데 걸린 시간이 기준을 넘겨 서버가 밀린 틱을 건너뛰었음을 알린다.

마인크래프트 서버는 1초에 20번, 즉 50밀리초마다 한 번씩 틱을 처리한다. 한 틱이 50밀리초를 넘기면 다음 틱이 밀리고, 밀린 시간이 일정 기준을 넘으면 서버는 따라잡기 위해 틱을 건너뛰면서 이 경고를 출력한다. 따라서 이 메시지는 원인이 아니라 결과를 알리는 신호이며, 무엇이 틱을 늦추었는지는 별도로 확인해야 한다.

정상적인 경우

다음 상황에서 한두 번 나타나는 것은 문제가 아니다.

  • 서버를 처음 시작하며 월드를 불러올 때
  • 대규모 WorldEdit 편집이나 월드 저장 직후
  • 백업이나 지도 렌더링 작업이 끝나는 시점

반복적으로, 특히 이용자가 접속한 상태에서 계속 출력된다면 조사가 필요하다.

주요 원인

원인 확인 방법
CPU 단일 코어 성능 부족 서버 틱 처리는 대부분 한 스레드에서 이루어진다. 코어 수보다 단일 코어 성능이 중요하다
가비지 컬렉션 정지 /spark health로 GC 정지 시간을 확인한다. 가비지 컬렉터 참고
청크 생성 새 지역 탐험이나 지도 렌더링 중 대량으로 발생한다
엔티티 과다 몹, 아이템, 마인카트, 호퍼가 밀집한 구역
플러그인의 메인 스레드 작업 데이터베이스 조회나 파일 입출력을 비동기로 처리하지 않는 플러그인
디스크 입출력 월드 저장과 백업이 겹치는 경우
호스팅 과점유 공유 호스팅에서 다른 이용자와 CPU를 나눠 쓰는 경우

조사 절차

  1. spark/spark health로 TPS, MSPT, GC 정지 시간을 확인한다. MSPT가 50밀리초를 넘는지 본다.
  2. /spark profiler start로 측정을 시작하고, 경고가 나타나는 동안 유지한 뒤 /spark profiler stop으로 결과를 확인한다.
  3. 결과에서 시간을 많이 쓰는 항목이 게임 자체인지 특정 플러그인인지 구분한다.
  4. GC 정지 시간이 길다면 가비지 컬렉터 설정을, 청크 관련 항목이 크다면 view-distancesimulation-distance를 검토한다.

하지 말아야 할 것

  • 메모리만 늘리기 — 원인이 CPU나 디스크라면 효과가 없다.
  • 엔티티 제거 플러그인부터 설치하기 — 증상을 가릴 뿐 원인은 남는다.
  • 경고를 끄기 — 서버가 밀리고 있다는 사실 자체는 바뀌지 않는다.

같이 보기