팰월드 서버 플레이어 없을 때 서버 리셋 후 일시 정지 하는 법

24시간 팰월드 서버를 운영하다보면 점점 서버에 렉이 걸리면서 맛이 가기 시작합니다. 메모리 누수로 인해 정리되지 않은 메모리들이 점점 쌓이면서 서버에 무리를 주게 되는 것인데, 이를 해결하기 위한 방법을 알아봅시다.

24시간 팰월드 서버

앞서 말한 문제점은 24시간 내내 운영되는 팰월드 서버에서 생겨나는 일이므로 본인이 서버를 여닫는 데디케이트 서버를 운영할 때는 문제가 되지 않습니다. 직접 껐다 켜면 되니까요.

그러나 24시간 내내 항상 열려있는 멀티 서버에서는 갑자기 서버를 닫았다 열어버릴 수도 없는 노릇입니다. 이러한 서버에서는 조금 다른 방법이 필요합니다. 24시간 팰월드 서버를 만드는 법은 아래 링크를 참고하세요.

팰월드 멀티 서버 24시간 서버 만드는 법

유저가 없을 때 서버 리셋 후 일시 정지하기

이제 유저들이 없을 때 서버를 리셋하고 일시 정지 상태로 유지하도록 할 것입니다. 이때 유저가 접속하면 일시 정지가 해제되면서 서버가 정상적으로 돌아가며, 유저가 1명도 없으면 다시 유휴 상태가 됩니다.

이 방법은 Docker를 이용하여 24시간 팰월드 서버를 만들었을 때 사용하는 방법입니다. 잘 모르겠으면 링크대로 서버를 만들었을 때 사용하는 방법이라고 아시면 됩니다.

준비물

서버를 재시작하도록 스크립트가 짜여져 있는 파이썬 파일입니다. 해당 파일을 다운받으세요.

또한 모바엑스텀이 필요합니다. 모바 엑스텀으로 세션 추가하는 방법은 다음 링크를 참고하세요.

팰월드 멀티 서버 24시간 서버 만드는 법#모바엑스텀 세션 만들기

1. Docker에 권한 부여하기

모바엑스텀에서 Docker에 권한을 부여해서 스크립트가 정상적으로 작동하게끔 해줘야 합니다.

sudo chmod 666 /var/run/docker.sock

위 명령어를 모바엑스텀에 입력하여 권한을 부여합니다.

2. server_restart.py 실행하기

다운받았던 Server_restart.py 파일을 드래그하여 모바엑스텀에 붙여넣기합니다.

위 상태에서 오른쪽 창에 다음과 같이 입력합니다.

nohup python3 -u server_restart.py &

위 명령어는 쉽게 말해 어떠한 프로그램을 종료없이 백그라운드로 계속 실행하고 싶다는 명령어입니다. 명령어를 입력하고 잘 작동하는지 확인하려면 아래와 같이 입력하세요.

ps -ef | grep server

palworl+ 7080 1 0 Apr22 ? 00:00:00 python3 -u server_restart.py

위처럼 server_restart.py가 포함된 명령줄이 보인다면 정상적으로 작동하고 있는 것입니다. 만약 잘못 입력했다면 아래 명령어로 종료할 수 있습니다.

kill -9 [PID번호]

PID는 ps -ef로 볼 수 있습니다. 여기서 저는 pid가 7080이기에 kill -9 7080을 입력하면 종료할 수 있습니다.

3. nohup.out 확인하기

작동하고 있는 server_restart.py는 nohup.out이라는 파일에 로그가 쌓여서 남게 됩니다. 이 로그를 실시간으로 확인하려면 아래와 같은 명령어를 입력하세요.

tail -f nohup.out

마지막 10줄을 실시간으로 보여주는 명령어입니다. 이제 팰월드 서버에 접속을 해봅시다.

팰월드 서버 플레이어 없을 때 서버 리셋 후 일시 정지 하는 법 - 3

접속한 유저의 이름, playeruid, steamid가 기록됩니다. 유저가 있으면 이렇게 서버가 계속 작동하고 유저가 없으면 아래와 같이 서버를 재시작합니다.

팰월드 서버 플레이어 없을 때 서버 리셋 후 일시 정지 하는 법 - 4

플레이어를 찾지 못해 서버를 재시작하고 있습니다. 재시작 이후에는 일시 정지 상태로 대기하며, 새로운 유저가 접속 시도를 하면 일시 정지를 풀고 서버가 다시 정상적으로 돌아가게 합니다.


이렇게 플레이어가 없을 때 서버를 재시작하고 일시 정지 상태로 만듦으로써 메모리 누수를 방지하고 서버를 쾌적한 상태로 유지할 수 있습니다.


서버 운영 팁

✓ 팰월드 멀티 서버 24시간 서버 만드는 법

- 구글 클라우드를 이용한 팰월드 24시간 멀티 서버 만드는 방법입니다.

기존 서버 정보를 유지한 채 새로운 24시간 멀티 서버 만들기

- 구글 클라우드의 크레딧을 거의 다 사용하여 새로운 서버를 만들어야할 때 기존 서버 정보를 새 서버에 이식하는 방법입니다.

24시간 서버에서 플레이어가 없으면 서버 정지하는 방법

- 메모리 누수 방지를 위해 플레이어가 없을 때 서버를 정지합니다. 일시 정지 상태가 아니라 서버 리셋 후 일시 정지보다 초기 접속 지연 시간이 깁니다. 대신 디스코드 옵션을 통해 디스코드로 서버 시작과 중지를 관리할 수 있습니다.

팰월드 서버 특정 시간마다 백업 및 재시작하는 방법

- 지정된 시간마다 서버를 백업하고 재시작하는 방법입니다. 플레이어가 없어도 서버가 열려있게 하고 싶은 경우 심야 시간에 백업 및 재시작을 하면 메모리 누수를 막고 서버의 진행 상황을 백업할 수 있습니다.

이 글에 10개의 댓글이 달려 있습니다.

댓글 등록하기

  1. 정보 잘 보고 갑니다. 현재 팰월드에 새로운 업데이트들이 많이 추가되어 다시 해보려고 하는데. 다른 문제들은 다 해결했지만 서버 재시작 프로그램에서 사람이 들어와 있어도 서버를 닫아버리는 문제가 생깁니다. 무슨 이유로 이러는 걸까요? 한글 닉네임이 그 문제와 관련있을까요?

    응답
    • 도커에 권한은 정상적으로 부여됐습니다.docker exec -it 서버명 rcon-cli ShowPlayers 를 moba 창에 입력했을때 name,playeruid,steamid 뒤 플레이어 정보 3개가 뜨는것도 확인했습니다. 하지만 프로그램을 실행했을땐 플레이어를 찾지 못하고 바로 서버가 꺼져버리네요… 대체 무엇이 문제일까요..ㅠ

      응답
    • 디스코드는 서버 열었을때 봇이 온라인이 되어야 하는거같은데 온라인이 되지않고 명령어도 먹지않습니다..watcher는 정상적으로 실행되었습니다

      응답
    • 댓글에 잘못된 말이 있어 첨언합니다. 명령어는 그대로 입력했는데 권한이 부여됐는지 확실하지 않네요. 어떻게 확인하면 될까요

      응답
    • stat -c '%A %a %n' /var/run/docker.sock 를 넣었을 때
      → srw-rw-rw- 666 /var/run/docker.sock 이 나오면 666 권한 부여한겁니다.

      혹시 서버명을 기본 palworld-server에서 다른 것으로 수정하셨다면 server_restart.py에서 Container_name 부분을 변경해주셔야 합니다만 서버가 재시작된다고 하셨으니 이 부분은 변함이 없으셨을 걸로 예상됩니다. 님의 증상은 제가 666 권한을 부여하지 않았을 때 겪었던 것과 동일한 증상이라 666 권한을 부여하셨으면 해결되었을 거라 생각했습니다만…….

      nohup.out 파일을 지우고 모바엑스텀에 (tail -f nohup.out)를 입력하고 서버를 실행하여 캐릭터를 접속시키고 팅길 때까지 기다리면서 뭐라고 기록되는지 확인을 해보세요.
      접속하는 순간 올바르게 플레이어 접속을 인식하는지.. 등등

      디스코드는 token, client_id, guild_id 중 하나만 틀려도 안됩니다. 다 올바르게 넣었다고 생각되면 다른 environment와 똑같이 구성되어 있나 확인해보세요. 예를 들면…
      – CONNECT_GRACE_SECONDS=60
      – SHUTDOWN_DELAY_SECONDS=0
      – DISCORD_TOKEN=xxx
      – DISCORD_CLIENT_ID=xxx
      – DISCORD_GUILD_ID=xxx
      처럼 -와 띄어쓰기가 똑같이 되어있나 확인해보시길 바랍니다.
      가상머신에서 작동되는 것이라 저만 되고 님이 안될 수는 없으니 무언가 실수가 있으셨을 거라 생각됩니다. 그리고 앞서 한글 닉네임에 대해 답을 못해드렸던 거 같은데, 저도 처음부터 한글 닉네임으로 진행했습니다. 닉네임이랑은 관계가 없습니다.

      응답
    • 서버를 하나 더 만들어서 테스트 해본 결과 초대서버 (싱글)로 하던 맵을 넣으면 문제가 생기네요. 그대로 따라한 신 맵에서는 정상 작동하지만 기존 맵을 넣는 순간부터 작동하지 않는걸 보면 그쪽에 뭔가 문제가 있나봅니다. stat -c ‘%A %a %n’ /var/run/docker.sock 명령어는
      stat: cannot stat ‘%a’: No such file or directory
      stat: cannot stat ‘%n’’: No such file or directory
      ‘srw-rw-rw-
      이렇게 결과가 나오네요. 당장은 해결법을 모르겠으니 그냥 하겠습니다 친절한 답변 감사합니다.

      응답
    • 코드 입력하실 때 댓글을 그대로 복사하셨나요? 따옴표가 코드 형태로 복사되지 않아 오류가 생기신 거 같습니다. 다시 복사해보시면 괜찮으실 겁니다.
      싱글맵과 멀티맵의 차이점은 제가 잘 몰라서 도와드릴 수 없을 거 같습니다. 말씀하신대로 맵 문제일 수도 있겠네요. 고생하셨습니다.

      응답
  2. docker exec -it 서버명 rcon-cli ShowPlayers 입력하면
    cli: execute: auth: rcon: dial tcp 127.0.0.1:25575: connect: connection refused
    라고 뜨고 플레이어가 있어도 서버가 그대로 종료됩니다 권한도 제대로 부여있는거 확인했습니다
    뭐가 문제일까요 플레이어가 서버안에 들어가도 연결이 거부되서 그냥 없다고 뜨는거같은데…

    응답