基本故障排除
本指南将帮助您在向 PaperMC 或插件作者报告问题之前诊断服务器的问题。
在按照本指南操作之前,请先停止服务器。在服务器仍在运行时修改服务器文件会导致文件损坏。 只有完全关闭服务器才能防止这种情况。
此外,如果您没有仔细按照本指南操作或在按照本指南操作时出错,可能会损坏您的服务器。强烈建议在按照本指南操作之前备份您的服务器。 理想情况下,应该通过复制生产服务器的文件来创建测试服务器,但这并不总是可能的。
阅读错误消息
如果您的服务器遇到问题,它要么会在服务器控制台上打印错误消息,要么会创建崩溃报告并自行关闭,或者两者都会发生。
如果您的服务器崩溃,崩溃报告将保存在 crash-report 目录中。
如果您的服务器没有崩溃,这些错误消息将与其他消息一起存储在 log 目录中。
请注意,早于最新日志的日志将被压缩,而不是以纯文本文件形式存储。
您要做的第一件事是诊断这些消息。
情况 01:Paper 看门狗线程转储
如果您的错误消息看起来像这样,不要盲目地向 PaperMC 报告,尽管它这么说:
[00:00:00] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-366 (MC: 1.19.3) ---
[00:00:00] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[00:00:00] [Paper Watchdog Thread/ERROR]: ------------------------------
这可能由各种原因造成。也许您的服务器硬件不足以运行 Minecraft 服务器。也许您使用的某个插件导致服务器卡顿。
Paper 看门狗的线程转储可以在该行下面找到。如果您在其中发现任何插件的名称,请与插件的作者讨论,而不是 PaperMC。
情况 02:堆栈跟踪
您遇到的几乎每个问题都会在服务器控制台上打印错误消息行,这些行被称为"堆栈跟踪"。检查堆栈跟踪将帮助您找出导致服务器问题的原因。
堆栈跟踪以错误消息、异常类型和异常消息开始。
错误消息和异常消息都是由插件或 Paper 的开发者放置的。这些消息告诉您服务器遇到了什么问题。
像 java.lang.RuntimeException 这样的异常类型告诉您异常的类型。这将帮助开发者(和您)理解问题的类型。
异常消息下面可能会出现许多以 at 开头的行。这些是堆栈跟踪的主体。这些行告诉您问题从哪里开始。堆栈跟踪主体的顶行将准确告诉您问题发生在哪里,如果可能的话,还会显示它来自哪里。
如果您在堆栈跟踪中发现任何插件的名称,请转到检查插件更新并从那里开始阅读。在大多数情况下,在堆栈跟踪中找到名称的插件就是导致问题的原因。如果不是,请继续阅读。
以下是一些堆栈跟踪的示例。
示例 01:服务器试图加载使用较新版本 Minecraft 保存的区块!
[00:00:00 WARN]: java.lang.RuntimeException: Server attempted to load chunk saved with newer version of minecraft! 3218 > 3120
您试图加载使用更高版本的 Minecraft 生成的世界。您不能这样做。 如果您没有在区块版本更新之前的世界备份,您必须使用更高版本的 Minecraft 来使用您更新的世界。
找出罪魁祸首
如果您在线程转储或堆栈跟踪中找不到任何插件的名称,请尝试以下步骤。
禁用所有插件
要确定是插件还是 Paper 本身导致问题,首先禁用所有插件。
您可以通过将 plugins 目录重命名为其他名称(如 plugins-disabled),或者通过归档 plugins 目录并删除它来禁用所有插件。
之后,尝试运行您的服务器。
如果在移除插件后问题得到解决,您就知道是插件导致了问题。 如果您仍然遇到问题,请转到 Paper 文档。也许您的服务器配置错误,这正在造成问题。
二分查找
要有效地搜索导致问题的插件,您可以执行以下操作:
- 将插件分成两组 两组的大小可以不同,但最好差异最小。确保相互依赖的插件被分在一起。
- 禁用两组插件中的一组
您可以通过将它们的扩展名从
.jar更改为其他名称(如.jar-disabled),或将它们移出plugins目录到临时目录来禁用它们。 - 运行服务器并检查问题是否仍然存在 如果问题得到解决,导致问题的插件是被禁用的插件之一。 如果问题没有解决,导致问题的插件是活动插件之一。
- 从头开始重复可疑插件组 对包含导致问题的插件的组重复上述步骤。
您安装的某些插件不是典型的插件,而是库。这些库像插件一样安装, 但往往提供很少的面向用户的功能,而是被其他插件依赖以提供功能。 如果您禁用库,依赖它的插件将无法正常工作。这些库的常见 示例包括 ProtocolLib、Vault 提供者、权限插件等。
检查插件更新
您的问题可能已经在插件的最新发布版本或最新构建版本中修复。
前往插件的官方下载页面,检查您是否使用的是插件的最新构建版本或最新发布版本。如果不是,请更新到最新版本,然后再次尝试运行服务器,看看问题是否得到解决。
更新库插件
许多插件使用像 ProtocolLib 这样的库插件,您必须下载它们并将它们放在 plugins 目录中。
如果您没有将它们更新到最新版本或最新构建版本,您可能会遇到与使用该库插件的插件相关的问题。
一些库插件告诉用户使用他们的最新开发构建版本以支持最新的 Minecraft 版本。您应该仔细查看插件的要求。
检查文档
如果您错误配置了插件或服务器,也可能导致服务器出现问题。
插件文档
许多插件提供了自己的文档,说明如何正确设置它们。仔细阅读这些文档,检查插件的配置是否有问题。
Paper 文档
Paper 也可以通过多种方式进行配置。查看这些文档以了解每个配置的详细说明。
咨询开发者
如果您的问题与您使用的插件有关,而您仍然不知道如何解决,您可以尝试联系插件的作者。 许多插件都有联系作者的方式,比如 GitHub 问题跟踪器、Discord 支持服务器、Gitter、IRC 等。
如果您的问题与任何插件无关,您可以来到 PaperMC 的 Discord 服务器寻求帮助,或在我们的 GitHub 问题跟踪器上创建新问题。