跳到主要内容

基本故障排除

本指南将帮助您在向 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 文档。也许您的服务器配置错误,这正在造成问题。

二分查找

要有效地搜索导致问题的插件,您可以执行以下操作:

  1. 将插件分成两组 两组的大小可以不同,但最好差异最小。确保相互依赖的插件被分在一起。
  2. 禁用两组插件中的一组 您可以通过将它们的扩展名从 .jar 更改为其他名称(如 .jar-disabled),或将它们移出 plugins 目录到临时目录来禁用它们。
  3. 运行服务器并检查问题是否仍然存在 如果问题得到解决,导致问题的插件是被禁用的插件之一。 如果问题没有解决,导致问题的插件是活动插件之一。
  4. 从头开始重复可疑插件组 对包含导致问题的插件的组重复上述步骤。
危险

您安装的某些插件不是典型的插件,而是库。这些库像插件一样安装, 但往往提供很少的面向用户的功能,而是被其他插件依赖以提供功能。 如果您禁用库,依赖它的插件将无法正常工作。这些库的常见 示例包括 ProtocolLib、Vault 提供者、权限插件等。

检查插件更新

您的问题可能已经在插件的最新发布版本或最新构建版本中修复。

前往插件的官方下载页面,检查您是否使用的是插件的最新构建版本或最新发布版本。如果不是,请更新到最新版本,然后再次尝试运行服务器,看看问题是否得到解决。

更新库插件

许多插件使用像 ProtocolLib 这样的库插件,您必须下载它们并将它们放在 plugins 目录中。

如果您没有将它们更新到最新版本或最新构建版本,您可能会遇到与使用该库插件的插件相关的问题。

一些库插件告诉用户使用他们的最新开发构建版本以支持最新的 Minecraft 版本。您应该仔细查看插件的要求。

检查文档

如果您错误配置了插件或服务器,也可能导致服务器出现问题。

插件文档

许多插件提供了自己的文档,说明如何正确设置它们。仔细阅读这些文档,检查插件的配置是否有问题。

Paper 文档

Paper 也可以通过多种方式进行配置。查看这些文档以了解每个配置的详细说明。

咨询开发者

如果您的问题与您使用的插件有关,而您仍然不知道如何解决,您可以尝试联系插件的作者。 许多插件都有联系作者的方式,比如 GitHub 问题跟踪器、Discord 支持服务器、Gitter、IRC 等。

如果您的问题与任何插件无关,您可以来到 PaperMC 的 Discord 服务器寻求帮助,或在我们的 GitHub 问题跟踪器上创建新问题。