有mjj能帮我看看幻兽帕鲁服务器的问题嘛(感谢大佬们的解答,我去试试)

Yae-Lee 2026-07-21 14:13 1

问题描述:


使用docker部署的幻兽帕鲁服务器,玩家可以正常连接进游戏服务器,但是在游玩一段时间后服务端会报错并重启,随后玩家可以再次连接进入服务器。这个崩服间隔时间完全随机,有时候可能玩几个小时才崩一次,有的时候可能10分钟崩3次。开始以为是存档问题,结果完全重新创建存档也会遇到一样的情况,也尝试过使用SteamCMD部署服务端,但每次都是玩家连接的时候就会黑屏,也不弹报错,就很奇怪。不过主要想请大佬们解决的还是docker部署的遇到的问题。


服务器机器配置:


pve机器配置:12490f+64G,通过debian12的ct模板开的小鸡,同时为了排除系统版本导致的问题,随后又单独开了个debian13的小鸡

小鸡分配的配置为:8c48G



服务端配置:


用的是官方的镜像,docker compose文件如下:


name: tds-palworld
services:
palworld-server:
# https://github.com/pocketpairjp/palworld-dedicated-server-docker/pkgs/container/palserver
image: ghcr.io/pocketpairjp/palserver:v1.0.1.100619
restart: unless-stopped
entrypoint: /pal/helper.sh

# https://tech.palworldgame.com/settings-and-operation/arguments
command:
- -port=8211

ports:
- "127.0.0.1:48211:8211/udp"
- "127.0.0.1:48212:8212/tcp"
- "127.0.0.1:44475:25575/tcp"

volumes:
- /etc/localtime:/etc/localtime:ro
- ./helper.sh:/pal/helper.sh:ro
- ./Saved:/pal/Package/Pal/Saved


使用frp连接,由于连接没有问题,就不贴frp的配置了


报错日志:


日志中因为不是我自己的账号登录测试,所以id用ABC代替了,实际日志输出是正常的,贴出的日志为一次完整的 服务端启动-玩家加入服务器游玩-报错-服务端重启 流程。


每次报错都是相同的问题,所以就贴其中一次的吧


docker输出的log文件:


The file has been successfully copied: /pal/Package/linux64/steamclient.so -> /pal/Package/Pal/Binaries/Linux/steamclient.so
sh: 1: xdg-user-dir: not found
Shutdown handler: initialize.
5.1.1-0+++UE5+Release-5.1 1008 0
Disabling core dumps.
[S_API] SteamAPI_Init(): Loaded local 'steamclient.so' OK.
Setting breakpad minidump AppID = 2394010
[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
IPC function call IClientUtils::GetConnectedUniverse took too long: 46 msec
Game version is v1.0.1.100619
REST API started on port 8212
Running Palworld dedicated server on :8211
[2026-07-17 16:43:25] [LOG] ABC 172.19.0.1 connected the server. (User id: ABC)

[2026-07-17 16:43:29] [LOG] ABC joined the server. (User id: ABC, Player id: ABC)

[2026-07-17 16:43:40] [LOG] ABC left the server. (User id: ABC)

[2026-07-17 16:48:54] [LOG] ABC 172.19.0.1 connected the server. (User id: ABC)

[2026-07-17 16:48:57] [LOG] ABC joined the server. (User id: ABC, Player id: ABC)

[54:54:20260717,172830.934203:ERROR elf_dynamic_array_reader.h:64] tag not found
Signal 11 caught.
Malloc Size=262146 LargeMemoryPoolOffset=262162
Malloc Size=131160 LargeMemoryPoolOffset=393352
Malloc Size=131160 LargeMemoryPoolOffset=524536
CommonUnixCrashHandler: Signal=11
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Segmentation fault

游戏保存的crash文件:

https://copy.hrk386.com/paste/1UiHYP


https://copy.hrk386.com/paste/stYg8k

最新回复 (9)
  • szx 07-21 14:15
    1

    现在能确定的是:Docker 不是主动重启,真正崩的是 PalServer 游戏进程。


    PDF 第 2 页的关键顺序是:


    Signal 11 caught.
    CommonUnixCrashHandler: Signal=11
    Engine crash handling finished
    Segmentation fault

    Signal 11 就是 SIGSEGV,通常表示进程发生了非法内存访问;随后因为 Compose 设置了 restart: unless-stopped,Docker 才把服务重新拉起。 ([man7.org][1])


    elf_dynamic_array_reader.h:64 tag not found 来自 Crashpad 的崩溃信息读取代码,它是在尝试解析已经崩溃的进程时找不到某个 ELF 标签,更像崩溃收集阶段的伴随报错,不应当把它当成根因xdg-user-dir: not found 和前面的 Steam API 警告也早于服务器成功启动,从时间顺序看不是这次随机崩服的触发点。([Chromium][2])


    我的判断


    最值得怀疑的是运行环境,而不是存档或 Compose 端口:



    1. 两次测试虽然分别用了 Debian 12 和 Debian 13,但都是 PVE LXC/CT 中再运行 Docker,共享相同的宿主机内核、CPU、内存和嵌套容器环境。

    2. PDF 第 1 页显示这个 CT 还是特权容器,且 Docker 又嵌套在里面。

    3. Proxmox 官方人员截至 2026 年仍明确表示:Docker 放在 LXC 内的“不推荐”结论没有改变,推荐放在 QEMU 虚拟机里。([Proxmox Support Forum][3])


    当前官方示例使用的镜像也正是你使用的:


    ghcr.io/pocketpairjp/palserver:v1.0.1.100619

    所以暂时看不出是拉错了镜像版本。官方 Compose 虽然还写了三个多线程参数,但当前文档说明 v1.0 以后不设置它们反而可能提高性能,因此缺少这三个参数不能直接解释崩溃。([GitHub][4])


    建议按这个顺序排查


    1. 先确认是否真的不是 OOM


    调试期间把:


    restart: unless-stopped

    临时改成:


    restart: "no"

    等它再次崩溃后执行:


    cid=$(docker compose ps -aq palworld-server)

    docker inspect "$cid" \
    --format 'exit={{.State.ExitCode}} oom={{.State.OOMKilled}} error={{.State.Error}}'

    journalctl -k --since "-30 min" |
    grep -Ei 'oom|killed process|segfault|mce|edac|hardware error'

    同一时间在 PVE 宿主机上也执行第二条命令。


    判断方法:



    • exit=139oom=false:基本确认是 PalServer 自身 SIGSEGV。

    • oom=true 或退出码 137:是宿主机或 CT 内存压力。

    • 出现 MCEEDAChardware error:优先检查 CPU、内存或主板。


    截图里虽然只用了约 3.84 GiB/48 GiB,但那只是某一时刻,无法排除崩溃瞬间的宿主机 OOM。官方要求是至少 16 GB,较大服务器建议超过 32 GB,你分配的容量本身是够的。([Palworld服务器指南][5])


    2. 做一次最关键的隔离测试


    在 PVE 上新建一个 Debian 12 QEMU/KVM 虚拟机



    • CPU 类型选择 host

    • 8 vCPU

    • 16~32 GB 内存

    • 本地 SSD 存储

    • 先不用 FRP

    • 使用全新的 Saved 目录

    • 使用同一个官方 Docker 镜像

    • 玩家先通过局域网或直接端口连接测试


    结果非常有判断价值:



    • VM 稳定、LXC 崩溃:基本定位为 LXC 内嵌 Docker、宿主内核、存储叠层或权限环境问题。

    • VM 加入 FRP 后才崩:再检查 FRP。

    • VM 不加 FRP也崩:继续怀疑当前 PalServer 版本或宿主机硬件。

    • VM 使用旧存档后才崩:再回头检查存档或服务器配置。


    172.19.0.1 是 Docker 网桥/NAT 后看到的来源地址,配合本机 FRP 属于正常现象,本身不像崩溃线索。


    3. 在同一个 VM 中验证 SteamCMD


    不要在另一个环境里比较。直接在上述 QEMU VM 中安装并校验:


    steamcmd +login anonymous +app_update 2394010 validate +quit

    然后用原生方式启动。这个是官方提供的下载和校验命令。([Palworld服务器指南][6])


    如果同一台 VM 中:



    • Docker 稳定、SteamCMD 黑屏:SteamCMD 部署、配置或网络问题。

    • Docker 和 SteamCMD 都随机 SIGSEGV:更像游戏版本 Bug或硬件问题。

    • 只有 LXC 环境崩:不用继续折腾 Debian 12/13,直接迁到 VM。


    4. 排除宿主机硬件不稳定


    随机时间、随机场景发生 SIGSEGV,而且换系统、换存档仍存在,也符合内存或 CPU 不稳定的表现。建议在维护时段:



    • 暂时关闭 XMP、超频、降压。

    • 更新 BIOS 和 Intel 微码。

    • 使用 Memtest86+ 跑一整晚。

    • 检查 PVE 宿主日志中的 MCE/EDAC。

    • 如有其他高负载程序也随机崩溃,硬件嫌疑会明显上升。


    目前还缺的关键材料


    PDF 里两个 crash 粘贴链接我这里无法读取,所以现在只有“发生 SIGSEGV”,还没有具体函数调用栈。请直接打包上传最近一次崩溃目录:


    tar -czf palworld-crash.tar.gz \
    ./Saved/Crashes \
    ./Saved/Logs \
    ./helper.sh \
    ./compose.yaml

    PalWorldSettings.ini 也可以放进去,但先删除服务器密码和管理员密码。拿到 CrashContext.runtime-xml.dmp 和崩溃前完整日志后,才有机会判断是 AI、物理、网络同步、存档序列化还是某个服务器线程崩掉。

  • cyan 07-21 14:23
    2

    让codex连接服务器帮你排查吧。我现在帕鲁服务器就是让codex维护,碰到的问题都能顺利解决。

  • yuyu 07-21 14:24
    3

    用CodeX连SSH,让AI帮你排查

  • xuemao 07-21 14:25
    4

    直接问ai

  • 永恒 07-21 14:25
    5

    用SteamCMD装吧,为每个用户创建个wireguard就不会黑屏了

  • szx 07-21 14:25
    6

    应该游戏进度直接崩溃了,分小鸡 可能与设备配置 导致异常直接游戏进度 卡掉了

  • Yae-Lee 楼主 07-21 14:27
    7

    @szx #1 好的大佬,我去试下换成kvm

  • Inklazy 07-21 14:29
    8
    services:
    palworld-server:
    image: ghcr.io/pocketpairjp/palserver:v1.0.1.100619
    container_name: palworld-server
    restart: unless-stopped
    entrypoint: /pal/helper.sh
    command:
    - -port=8211
    - -players=16
    - -logformat=text
    # 如果 Xbox/PS5 玩家要进,取消下面几行注释,做成社区服:
    # - -publiclobby
    # - -publicip=你的公网IP或穿透出口IP
    # - -publicport=8211
    ports:
    - "8211:8211/udp"
    - "127.0.0.1:8212:8212/tcp"
    volumes:
    - ./helper.sh:/pal/helper.sh:ro
    - ./Saved:/pal/Package/Pal/Saved
    stop_grace_period: 120s
    logging:
    driver: local
    options:
    max-size: "20m"
    max-file: "5"

    我的配置,目前没遇到问题,tailscale组局域网玩的

    pve下debian13虚拟机跑的docker

  • Yae-Lee 楼主 07-21 14:31
    9

    @Inklazy #8 好的大佬,我学习一下 ^-^

* 帖子来源NodeSeek
返回