Skip to content

线程数调优

本页将分享我在 Folia 线程数设置方面的经验。

总览

我建议调整以下 3 处线程数配置,分别是:

  • threaded-regions(config/paper-global.yml)
  • chunk-system(config/paper-global.yml)
  • netty-threads(spigot.yml)

根据我的经验,建议将可用线程数的 80% 的一半分配给 tickregion(因为 tickregion 通常具有较高优先级),剩余部分的一半分配给 chunk-system,其余留给插件和 netty-threads。

此外,如果您已对整个世界进行了预生成,chunk-system 的分配可以减少约 30~50%。

另外,由于大多数情况下服务器世界并未预生成,仍建议为 chunk-system 保持较高的次要优先级,以在玩家传送和加入时保证流畅体验。

Netty 线程通常占用不多,保持默认值即可。如果您使用的插件需要频繁且大量地修改数据包,建议将其提高约 50%(例如 4 → 6)。

以上内容来自我朋友服务器的实际经验,可能并不完全适用于所有环境。

Chunk 系统

此配置项下有 2 个子项:worker 线程和 IO 线程。

一般情况下,可参考官方文档(每 200~300 名玩家约分配 3 个 IO 线程)来配置 IO 线程数,剩余线程分配给 worker 线程。

此外,如果您使用的分支支持 linear 或 bufferedlinear 格式,建议将 IO 线程数提高约 1/3,因为这些格式可能会在 IO 线程上执行较重的压缩操作,导致存档写入滞后。

Netty 线程

Netty 线程负责管理服务器的 socket IO,处理每个数据包的解码/编码,并接受传入连接。

默认情况下无需修改此设置(在我朋友的服务器上,110 名玩家时 4 个线程的占用约为 28%)。如果服务器同时在线人数超过 300,建议提高约 50%(通常保持 15% 的空闲余量即可)。