Project Zomboid 服务器可能因多种已知原因崩溃或无法启动。本指南涵盖了 Legion Hosting 支持工单中最常见的原因——从 Build 42 启动时需要额外内存的内存错误,到备份溢出导致 /tmp 空间不足,再到配置文件损坏。请按以下章节顺序逐一排查。
开始之前——找到您的崩溃日志
几乎每次 Project Zomboid 崩溃都会在以下两个位置之一留下记录。在尝试任何修复之前,请先检查这两个位置,以便确定本指南中哪个章节适用于您的情况。
GPanel 控制台输出
- 登录 GPanel。
- 从服务器列表中选择您的 Project Zomboid 服务器。
- 点击 Console 选项卡。
- 滚动到输出底部。查找标记为
ERROR、FATAL、OutOfMemoryError或Exception的行。服务器停止前的最后 20-30 行通常最为关键。 - 如果控制台为空,说明服务器进程在写入任何内容之前就已终止——这本身就是一个线索(参见下方的 B42 内存章节)。
服务器 debug.log 文件
Project Zomboid 会在服务器数据目录中写入一个名为 debug.log 的详细日志。该文件通常包含完整的 Java 堆栈跟踪信息,可直接指向崩溃原因。
- 在 GPanel 中,转到 File Manager 选项卡。
- 导航到
/.cache/Logs/。您会看到名为debug.log、DebugLog-server.txt或带日期的日志文件。 - 打开最新的日志文件。使用 Ctrl+End 或滚动到最底部,然后从那里向上阅读。
- 查找关键词
OutOfMemoryError、IOException、NullPointerException或SandboxVars。复制相关行——如果您需要提交支持工单,会用到这些信息。
修复 1——Build 42 启动时高内存使用(已知游戏缺陷)
如果您的服务器在启动时立即退出且控制台无错误信息,或者控制台显示 OutOfMemoryError 或 Java 堆空间错误,则服务器在世界加载完成之前就已耗尽内存。
症状
- 服务器启动后,控制台滚动几秒钟,然后停止,没有面向玩家的错误信息。
- 控制台显示
java.lang.OutOfMemoryError: Java heap space或GC overhead limit exceeded。 - 服务器有时重启可以正常工作,有时不行(内存可用量不稳定)。
- 服务器在 B41 上运行正常,但升级到 B42 后持续崩溃。
步骤
- 在 GPanel 中,点击您的服务器并转到 Console 选项卡。查看资源栏或服务器信息面板中显示的当前内存分配。
- 如果您的套餐包含的内存少于 10 GB,服务器可能在启动时崩溃,因为 B42 需要约 9 GB 来初始化。您需要升级套餐或等待 Indie Stone 发布修复补丁。
- 如果您的套餐已有 10 GB 或更多内存,服务器仍在启动时崩溃,请转到 GPanel 中的 Startup 选项卡。
- 查找标记为 Java Memory、Max RAM 或 Xmx 的字段。确认其设置不超过总可用内存的 80-85%。例如,在 12 GB 套餐上,将此值设为
10240(即 10 GB,以兆字节为单位)。不要将其设置为等于或超过总内存——操作系统和其他进程也需要内存。 - 在 Startup 选项卡上点击 Save,然后重启服务器。
- 在启动过程中观察控制台。如果服务器到达
SERVER STARTED行或LuaManager: Loading lua files...完成而没有崩溃,则内存分配已足够。
修复 2——BackupsOnStart 溢出 /tmp(启动崩溃)
Project Zomboid 可以配置为每次服务器启动时创建完整的世界备份。当此备份写入 /tmp(在大多数 Linux 主机上空间有限)时,一旦 /tmp 空间耗尽,服务器会在启动过程中因磁盘写入错误而崩溃。
症状
- 服务器在每次重启时都会可靠地崩溃,但之前运行正常。
- 控制台或
debug.log中包含IOException: No space left on device等错误,或提到写入/tmp/。 - 随着世界存档变大,崩溃往往越来越严重。
- 在主机节点干净重启后不久尝试启动服务器,有时可以成功(因为
/tmp还未填满)。
步骤——禁用 BackupsOnStart
- 在 GPanel 中,转到 File Manager 选项卡。
- 导航到
/.cache/server/。找到您的服务器配置文件——通常命名为servertest.ini或您的服务器名称后跟.ini(例如MyServer.ini)。 - 打开
.ini文件进行编辑。 - 使用浏览器的查找功能(Ctrl+F)搜索
BackupsOnStart。 - 将值从
true更改为false:BackupsOnStart=false - 在文件中,同时检查
BackupsOnVersionChange设置,如果磁盘空间是一个问题,也将其设为false:BackupsOnVersionChange=false - 保存文件并重启服务器。监控控制台以确认服务器到达
SERVER STARTED行。
/.cache/saves/multiplayer/ 文件夹的副本,或联系 Legion Hosting 支持咨询您套餐中的定期备份选项。
修复 3——损坏的 SandboxVars.lua 或服务器配置
Project Zomboid 将世界设置存储在名为 SandboxVars.lua 的 Lua 文件中。如果此文件被手动编辑并保存时存在语法错误,或文件传输被中断,服务器在启动时尝试解析该文件时会立即崩溃。
症状
- 控制台显示
ERROR: SandboxVars、LuaManager error或带有行号的 Lua 解析错误。 - 在您直接编辑
.ini文件或SandboxVars.lua后开始出现崩溃。 - 服务器可能显示
Bad argument #1 to或类似的 Lua 运行时错误。
步骤——检查并修复 SandboxVars.lua
- 在 GPanel 中,转到 File Manager 并导航到
/.cache/saves/multiplayer/<YourServerName>/。 - 打开
SandboxVars.lua进行编辑。 - 检查文件是否以
SandboxVars = {块内的VERSION = 1,(或类似内容)开头,并以结束的}结尾。任何缺失的逗号、未关闭的大括号或多余字符都会导致解析失败。 - 如果您无法找到错误,最安全的修复方法是完全删除
SandboxVars.lua。服务器将在下次启动时使用默认值重新生成它。注意:这会将您的沙盒设置(战利品、僵尸数量等)重置为默认值——您的地图数据和玩家数据不受影响。 - 如果您最近手动编辑了
/.cache/server/中的.ini文件,也请检查其是否存在类似问题。确保每一行都遵循Key=Value格式,值中没有空行。 - 保存更改并重启服务器。
SandboxVars.lua。建议使用游戏内管理面板或 GPanel 中的服务器设置界面(如可用)。直接编辑容易出错,一个遗漏的逗号就可能导致服务器崩溃。
修复 4——空的管理员密码导致崩溃
Project Zomboid 要求非空的管理员密码才能启动多人服务器。如果密码字段为空,服务器进程会在尝试初始化管理员账户后立即退出。
症状
- 全新服务器或最近重置的服务器每次启动尝试都失败。
- 控制台输出非常短——服务器打印几行初始化信息然后停止。
debug.log可能包含对管理员账户或密码验证的引用。
步骤
- 在 GPanel 中,点击您的服务器并转到 Startup 选项卡。
- 查找标记为 Admin Password 或 RCON Password 的字段。确认其包含一个值——不能为空。
- 如果字段为空,请输入一个密码。使用至少 8 个字符。避免在管理员密码中使用
!、#、$或@等特殊字符,因为某些 PZ 版本无法在启动参数中正确解析这些字符。 - 点击 Save 并重启服务器。
- 作为二次检查,打开
/.cache/server/中的.ini文件,确认AdminPassword=行在等号后有值。
修复 5——重置世界(持续崩溃的最后手段)
如果世界存档已损坏——例如在服务器硬崩溃、更新失败或文件系统错误之后——存档数据本身可能无法恢复。在这种情况下,删除世界并重新开始是唯一的选择。
步骤
- 在进行任何存档文件更改之前,先在 GPanel 中停止服务器。 在运行中的服务器上编辑文件可能导致进一步损坏。
- 在 GPanel 中,转到 File Manager 选项卡。
- 导航到
/.cache/saves/multiplayer/。 - 您会看到一个或多个以服务器名称命名的文件夹(例如
servertest)。在删除之前,可以选择通过选中文件夹并使用下载选项来下载备份——即使是损坏的存档,以后也可能部分恢复。 - 删除
Multiplayer/内与您服务器名称匹配的文件夹。不要删除Multiplayer文件夹本身。 - 同时导航到
/.cache/db/并删除<YourServerName>.db文件。此数据库保存玩家统计数据,可能引用旧世界——重新生成它可以避免不匹配。 - 启动服务器。它将使用
.ini文件中的设置生成一个全新的世界。
.ini 文件、管理员密码、模组列表和端口设置都会保留。下次启动将使用完全相同的设置来生成新世界。
快速诊断参考
| 日志中显示的内容 | 最可能的原因 | 修复方法 |
|---|---|---|
OutOfMemoryError 或 Java heap space |
B42 启动时内存不足 | 修复 1——B42 内存缺陷 |
IOException: No space left on device |
BackupsOnStart 填满 /tmp |
修复 2——BackupsOnStart |
SandboxVars 错误或 Lua 解析错误 |
损坏或手动编辑的配置文件 | 修复 3——SandboxVars.lua |
| 服务器立即退出,控制台输出很短 | 管理员密码为空 | 修复 4——管理员密码 |
| 无论配置如何更改都持续崩溃 | 世界存档损坏 | 修复 5——世界重置 |
完成所有步骤后仍然崩溃?
如果您的服务器在完成上述所有修复步骤后仍然崩溃,请向 Legion Hosting 提交支持工单。请包含以下信息以帮助支持团队快速诊断问题:
- 崩溃时 GPanel 控制台输出的最后 50 行
- 最新的
debug.log或DebugLog-server.txt文件的完整内容 - 您服务器的 Project Zomboid 构建版本(在启动时控制台中显示,例如
Build 42.x.x) - GPanel 中显示的内存分配情况
- 崩溃是每次启动都发生,还是仅在服务器运行一段时间后才发生
- 崩溃开始前您所做的任何更改(添加模组、编辑配置、游戏更新)
提交支持工单,并附上您的服务器 ID 和 GPanel 控制台中的错误信息。