NitWikit/docs/准备工作/基础知识/如何评判服务器卡顿.md
2024-05-20 09:04:51 +08:00

56 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_position: 5
---
# 如何评判服务器卡顿
服务器中玩家可感知到的卡顿是多种多样的,其中主要包括服务器处理速度不足导致的 **MSPT** 偏高, **TPS** 偏低, 服务器网络波动导致的 **Ping** (即为服务器和玩家之间的网络延迟)
总的说来 **MSPT****TPS** 是用于评价服务器流畅程度的,而 **Ping** 是用于评价服务器和玩家之间的网络稳定性。
## Minecraft 服务器卡顿的底层逻辑是什么?
**理想情况下**Minecraft 无论什么版本都是每秒钟刷新 20 次,也就是说每次刷新之间间隔 50ms ( 1000ms / 20 ) 刷新一次,即为一个 **Tick**
![](https://spark.lucko.me/docs/assets/images/ticks-lagging-0bec1e4f565281af7a643f94222df521.png)
**正常情况下**,每个 Tick 都小于 50ms ,为了保证 Minecraft 以 20 Tick 每秒的速度运行,服务器将选择等待下一个 Tick
![](https://spark.lucko.me/docs/assets/images/ticks-with-sleeping-3b944bf10f5a21b16d1454f2d7fee434.png)
**服务器滞后时**,当服务器某个 Tick 无法在 50ms 内完成时,服务器将产生滞后,一旦发生滞后,每个 Tick 将会顺延,每秒钟发生的 Tick 将会减少。
![](https://spark.lucko.me/docs/assets/images/ticks-lagging-0bec1e4f565281af7a643f94222df521.png)
:::warning
此处只是最简单的理解,要对卡顿有更深层的理解请查看[TODO:多线程](/docs/准备工作/基础知识/什么是多线程.md)
:::
## TPS
TPSTicks Per Second(每秒 Tick 数)正常情况下的 TPS 应该为 20 ,也就是说 Minecraft 服务器每秒钟会进行 20 次更新,确保游戏内的红石、生物 AI 等按照正常工作。
:::warning
TPS 只是最基础的量化卡顿程度。并不是 TPS 高,玩家就感受不到卡顿,也不是 TPS 低就一定会感受到非常卡顿。这是因为TPS 只是计算一个平均值,如果某一个 Tick 花费了 800ms ,而剩下的 18 Tick 只花费了 200ms即使计算出的 TPS 为 19 但玩家会感受到的 800ms 的滞后。下文提到的 MSPT 能够更加精准量化卡顿程度。
:::
## MSPT
MSPTMilliseconds Per Tick(就是每进行一次 Tick 所花费的毫秒数)
如果 MSPT 数值较低,说明服务器可以迅速快速进行每次 Tick ,游戏运行更为流畅。反之,如果 MSPT 过高,意味着每次 Tick 所需的时间变长游戏的运行速度就会变慢进而影响到整体的TPS。
影响 MSPT 的东西很多如区块生成AI 计算,插件计划任务等都会影响 MSPT。
## 查看 TPS 和 MSPT
1. 如果为 purpur fork 服务器可以输入 /tpsbar 查看 MSPT 和 TPS
2. 如果为 paper 服务器可输入 /mspt 查看 MSPT输入 /tps 查看 TPS
3. 安装 [TpsBar](https://hangar.papermc.io/jmp/TabTPS) ,显示更好看。