팰월드 서버 렉: 원인부터 가려내는 순서
팰월드 전용 서버가 렉 걸리는 원인은 네 가지고, 고치는 곳이 각각 달라요. 누가 느끼는지·언제 느끼는지로 먼저 가르고, 서버 프레임률을 직접 읽어 확정하는 순서를 정리했어요.
"서버 렉 걸린다"는 한마디 안에는 서로 관계없는 네 가지 문제가 들어 있어요. 게임 안에서 보면 다 비슷하게 느껴지는데 고치는 자리는 전혀 달라서, 집 Wi-Fi 문제에 메모리를 더 사거나 메모리 누수를 고치겠다고 서버 지역을 옮기는 일이 실제로 벌어져요.
이 글은 고치는 방법이 아니라 찾아가는 순서예요. 1분이면 대부분을 갈라내는 두 가지 질문, 그래도 남는 것을 확정해 주는 숫자 하나, 그리고 원인별로 어디서 고치는지. 각 갈래 끝에는 그 주제를 깊게 다룬 글이 있어요.
1단계: 서버 문제가 맞나요
설정을 건드리기 전에 이게 누구 문제인지부터 정해요. 질문 두 개면 거의 다 갈려요. 다른 사람도 같이 느끼나요, 그리고 화면이 끊기나요 아니면 조작이 늦게 먹히나요.
| 증상 | 누구 문제 | 어디서 고치나 |
|---|---|---|
| 내 조작만 반 박자 늦게 먹힌다, 다른 사람은 멀쩡하다 | 내 회선 | 핑과 지역, 렉의 세 가지 얼굴 |
| 화면은 끊기는데 조작은 즉시 먹힌다, 다른 사람은 멀쩡하다 | 내 PC | 아래 "클라이언트 프레임 드랍은 다른 숫자예요" |
| 전원이 같은 순간에 밀린다 | 서버 | 아래 2단계 |
| 아예 접속이 안 된다, 목록에 없다, 간헐적으로 튕긴다 | 렉이 아니에요 | 접속이 안 될 때 점검 순서 |
이 글이 다루는 건 세 번째 줄뿐이에요. 나머지 셋은 말 그대로 서버 밖의 문제라, 서버 설정을 아무리 만져도 움직이지 않아요.
일을 시작하기 전에 알아 두면 좋은 지름길이 하나 있어요. 재시작했더니 즉시 멀쩡해진다면 머신이 작은 게 아니에요. 이 테스트 하나로 가장 비싼 오답이 걸러지고, 원인은 엔진의 메모리 누수 쪽을 가리켜요.
2단계: 서버 프레임률을 직접 읽기
팰월드 서버에는 자기 프레임률이 있어요. "느낌상 렉이 있다"와 "숫자가 이렇다"를 가르는 게 이거예요. 값은 공식 REST API에서 나오고, 서버가 로컬호스트에만 여는 인터페이스예요(켜는 방법과 보안 규칙 하나는 REST API 안내에 있어요).
curl -s -u "admin:$PW" http://127.0.0.1:8212/v1/api/metrics
{"serverfps":13,"serverframetime":76.9,"currentplayernum":4,
"maxplayernum":16,"uptime":259200,"days":137,"basecampnum":11}
팰월드 전용 서버는 건강할 때 초당 30프레임으로 돌아요. 60이 아니에요. 내 클라이언트와 같은 값일 거라고 생각하면 놀라는 대목이고, 28이 나와도 아무 문제가 아닌 이유이기도 해요. 숫자가 뜻하는 건 이래요.
serverfps | 플레이어가 느끼는 것 |
|---|---|
| 25~30 | 정상이에요. 여기서 고칠 건 없고 1단계를 다시 보세요 |
| 15~25 | 첫 불평이 나오는 구간. 전투가 끈적한데 딱 집어 말하기는 어려워요 |
| 15 미만 | 전원이 느껴요. 위치 밀림, 일하다 멈춘 팰, 늦게 들어가는 타격 |
| 한 자릿수 | 못 할 정도이고, 보통 프로세스가 죽기 몇 분 전이에요 |
같은 응답에서 같이 볼 값이 셋 더 있어요.
serverframetime은 프레임 하나에 걸린 밀리초예요. 프레임률의 역수쯤 되고(30fps면 약 33ms), 평균 프레임률이 움직이기 전에 스파이크가 먼저 여기서 보여요. 평균은 멀쩡한데 몇 초에 한 번씩 걸리는 서버를 잡아내는 값이에요.uptime은 프로세스가 켜진 뒤 지난 초예요. 누수의 증거고요. 낮은 프레임률과 긴 가동 시간이 같이 나오면 더 재 볼 것도 없어요.basecampnum은 월드에 있는 거점 수예요. API가 주는 값 중 프레임률과 가장 붙어 다니는 숫자예요. 월드는 사람이 늘어서 무거워지는 게 아니라 지어 놓은 게 늘어서 무거워지거든요.
값은 누가 불평하고 있을 때 재세요. 한가한 아침에 찍은 숫자는 토요일 밤에 대해 아무것도 말해 주지 않아요.
3단계: 서버 프레임률을 끌어내리는 네 가지
실제로 자주 나오는 순서예요. 각각 1분 안에 맞는지 아닌지 가려내는 테스트가 있어요.
1. 가동 시간 — 메모리 누수. 서버 메모리는 올라가기만 하고, 프레임률은 같이 처지고, 결국 OS가 프로세스를 죽여요. 테스트는 재시작이에요. 바로 멀쩡해지면 이거예요. 압도적으로 흔한 원인이고, 메모리를 늘려도 죽는 간격만 벌어져요. 답은 예약 재시작이고 주기와 공지·저장·정지·시작 순서, 스크립트까지 메모리 누수와 예약 재시작에 있어요.
2. 월드가 무거워졌다. 거점, 건축물, 일하는 팰, 떨어진 아이템은 전원이 접속을 끊어도 계속 시뮬레이션돼요. 저절로 사라지지 않고요. 테스트는 basecampnum 하나와 눈으로 한 바퀴. 거점 열 몇 개에 자리마다 팰이 꽉 차 있으면 첫 주의 몇 배를 돌리고 있는 거예요. 직접 움직이는 설정은 넷이고(bEnableInvaderEnemy, BaseCampWorkerMaxNum, BaseCampMaxNum, DropItemAliveMaxHours — 설정 항목 전체 설명), 먼저 끌 것은 습격이에요.
3. 사람이 몰리는 시간대 — 메인 스레드. 물리, 길 찾기, 전투, 상태 동기화가 전부 한 스레드에서 돌아요. 그래서 코어 수보다 클럭이 천장을 정해요. 테스트는 곡선의 모양이에요. 넷일 때 멀쩡하고 열 명에서 처지고 사람이 빠지면 돌아오면, 누수가 아니라 인원 대비 사양 문제예요. 무엇을 기준으로 잡는지는 필요 사양에, 인원 상한이 숫자 하나가 아닌 이유는 인원 상한 이야기에 있어요.
4. 규칙적인 끊김 — 디스크. 전원이 아주 짧게 얼어붙는 일이 일정한 간격으로 반복되고, 서버가 바쁜지 한가한지와 무관해요. 테스트는 시계예요. 끊기는 간격이 AutoSaveSpan(기본 30초)과 맞아떨어지면 자동 저장이 느린 디스크를 만난 거예요. 이건 네트워크 문제로 오진되는 일이 정말 잦아요. SSD면 끝나요.
둘이 동시에 참인 경우도 있어요. 몇 달 된 서버면 대개 그렇고요. 그래도 순서는 위대로 가세요. 재시작은 공짜고 가장 큰 놈을 걸러 주니까요.
호스팅에서는 이 숫자가 이미 그려져 있어요
KeepWorlds의 팰월드 전용 서버는 프레임률과 접속 인원을 1분마다 기록해서 콘솔의 서버 상태 추이에 그려 줘요. 24시간 곡선 두 개, 평균 FPS와 최저 FPS, 그리고 최대치(30)의 절반에 그어진 경고선까지 있어서 이 게임에서 13이 낮은 값인지 한눈에 보여요. 두 곡선을 겹쳐 보는 게 curl 없이 하는 3단계예요. 접속 인원이 올라갈 때 프레임률이 처지면 메인 스레드, 인원이 그대로인데 처지면 누수나 월드 무게고요. 곡선이 끊긴 구간은 서버가 멈춰 있던 시간인데, 1번 원인을 알아서 처리해 주는 매일 예약 재시작도 거기 보여요.
클라이언트 프레임 드랍은 다른 숫자예요
이름이 같은 프레임률이 둘이라, 헷갈리면 아무 문제 없는 쪽 기계의 설정을 만지게 돼요. 내 클라이언트 FPS는 내 그래픽카드가 그리는 속도이고, 서버 FPS는 월드가 시뮬레이션되는 속도예요. 둘은 따로 움직여요.
가르는 질문은 하나예요. 조작은 즉시 먹히나요?
| 증상 | 어느 쪽 프레임률 | 무엇을 하나 |
|---|---|---|
| 화면은 끊기는데 공격과 메뉴는 즉각 반응하고, 친구들은 멀쩡하다 | 내 클라이언트 | 내 PC의 그래픽 설정 |
| 화면은 부드러운데 타격이 늦게 들어가고, 다들 그렇다고 한다 | 서버 | 위의 2단계 |
| 둘 다인데, 월드의 특정 장소에서만 그렇다 | 둘 다 — 무거운 거점은 모두에게 무거워요 | 3단계의 2번 |
알아 둘 값어치가 있는 건 마지막 줄이에요. 건축물이 수백 개에 일하는 팰이 가득한 거점은 서버에는 시뮬레이션 부담이고 내 PC에는 렌더링 부담이라, 지도의 같은 자리에서 두 숫자가 같이 무너져요. 이걸 "우리 거점에서 서버가 렉 걸린다"로 말하고는 엉뚱한 기계를 뒤지게 되고요.
클라이언트 쪽 드랍은 손댈 곳이 전부 내 PC 안이에요. 그래픽 프리셋, 해상도 배율, GPU를 같이 쓰고 있는 다른 프로그램. 전용 서버가 도와줄 수 있는 건 하나도 없어요. 대신 반대쪽 절반이 건강한지는 책임질 수 있고, 그게 이 글의 나머지 내용이에요.
설정으로는 낫지 않는 렉
두 가지는 서버 것이 아니에요. 설정을 아무리 만져도 닿지 않아요.
- 높은 핑과 패킷 손실. 팰월드는 UDP로 통신하고 잃어버린 패킷을 다시 보내지 않아서, 손실률이 1%만 넘어도 평균 핑이 좋든 말든 위치 밀림이 생겨요. 재는 법, 지터 읽는 법, 친구들이 여러 나라에 흩어져 있을 때 지역 고르는 법은 핑과 지역, 렉의 세 가지 얼굴에 있어요.
- 버전 불일치. 게임이 업데이트된 뒤 옛 빌드로 돌고 있는 서버는 느려지는 게 아니라 전원을 막아요. 그런데 증상은 네트워크 문제처럼 보이고요. 세이브를 지키는 업데이트 순서를 보세요.
자주 묻는 질문
팰월드 서버가 왜 렉이 걸리나요?
누가 느끼는지부터 확인하세요. 나만 그러면 내 회선이나 내 PC예요. 전원이 동시에 밀리면 서버를 재시작해 보세요. 즉시 멀쩡해지면 엔진의 메모리 누수고, 이게 압도적으로 흔한 원인이에요. 재시작해도 그대로면 사람들이 불평하는 그 시간에 REST API로 serverfps를 읽으세요. 접속 인원을 따라 처지면 CPU 메인 스레드, 인원이 그대로인데 처지면 무거워진 월드예요.
팰월드 서버 프레임률은 얼마가 정상인가요?
팰월드 전용 서버의 최대치는 30이라 25 이상이면 정상이에요. 15~25 구간에서 첫 불평이 나오고, 15 아래로 내려가면 위치 밀림과 일하다 멈춘 팰로 월드의 모두가 느껴요. 값은 REST API의 /metrics에서 읽고, 한가할 때가 아니라 서버가 바쁠 때 재세요.
프레임 드랍이 제 PC 문제인가요, 서버 문제인가요?
조작이 즉시 먹히는지를 보세요. 화면만 끊기고 조작은 즉각적이라면 내 그래픽카드 쪽이고, 다른 사람은 아무렇지 않아요. 화면은 부드러운데 타격이 늦게 들어간다면 서버 쪽이고, 같은 순간에 전원이 같이 느껴요. 둘이 동시에, 그것도 지도의 특정 구역에서만 무너진다면 서버 시뮬레이션과 내 PC 렌더링을 함께 잡아먹을 만큼 무거운 거점이에요.
거점이 많으면 팰월드 서버가 느려지나요?
같이 노는 사람들이 자기 서버에 하는 일 중 가장 큰 게 그거예요. 거점과 거기 세운 건축물, 배치한 팰은 전원이 접속을 끊어도 계속 시뮬레이션되기 때문에, 부하는 접속 인원보다 지어 놓은 양을 따라가요. /metrics의 basecampnum이 지켜볼 값이고, 거점 수와 거점당 일꾼 수를 제한하고 습격을 끄는 것이 가장 직접적인 세 가지 손잡이예요.
재 볼 사람이 없을 때
위의 전부는 사람들이 불평하는 바로 그 순간에 값을 읽어 줄 누군가가 있다는 가정 위에 있어요. 그런데 그 시각은 보통 아무도 SSH를 붙일 형편이 아닌 시각이죠. 서버 렉의 진짜 어려움이 여기예요. 증거는 그때만 있고, 누가 들여다볼 때쯤이면 서버는 한가해져서 아주 건강한 숫자를 보여 줘요.
KeepWorlds의 팰월드 서버는 그 값을 이미 재 두고 있어요. 프레임률과 접속 인원을 1분마다, 경고선이 그어진 24시간 곡선으로요. "어젯밤에 엄청 심했다"를 복원하는 대신 열어 보면 되고요. 가장 흔한 원인은 도착하기 전에 처리돼요. 매일 예약 재시작이 정해 둔 시각에 게임 내 공지와 강제 저장을 먼저 하고 누수를 비워 주거든요. 나머지 원인을 좌우하는 설정들, 그러니까 습격과 거점 상한, 거점당 일꾼 수는 SSH로 고치는 .ini 한 줄이 아니라 게임 설정 폼의 입력란이에요.