From 82097bff877401a4f9e3513305bc4979bf1e17d7 Mon Sep 17 00:00:00 2001 From: Radiation-pi <96102795+Radiation-pi@users.noreply.github.com> Date: Sun, 19 May 2024 12:15:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Update=20and=20rename=20=E5=A6=82=E4=BD=95?= =?UTF-8?q?=E8=AF=84=E5=88=A4=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=B5=81=E7=95=85?= =?UTF-8?q?=E7=A8=8B=E5=BA=A6.md=20to=20=E5=A6=82=E4=BD=95=E8=AF=84?= =?UTF-8?q?=E5=88=A4=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=8D=A1=E9=A1=BF.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/准备工作/基础知识/如何评判服务器卡顿.md | 55 +++++++++++++++++++ .../基础知识/如何评判服务器流畅程度.md | 29 ---------- 2 files changed, 55 insertions(+), 29 deletions(-) create mode 100644 docs/准备工作/基础知识/如何评判服务器卡顿.md delete mode 100644 docs/准备工作/基础知识/如何评判服务器流畅程度.md diff --git a/docs/准备工作/基础知识/如何评判服务器卡顿.md b/docs/准备工作/基础知识/如何评判服务器卡顿.md new file mode 100644 index 0000000000..bca4d39bc4 --- /dev/null +++ b/docs/准备工作/基础知识/如何评判服务器卡顿.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 1 +--- + +# 如何评判服务器卡顿 + +服务器中玩家可感知到的卡顿是多种多样的,其中主要包括服务器处理速度不足导致的 **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 + +TPS(Ticks Per Second)(每秒 Tick 数)正常情况下的 TPS 应该为 20 ,也就是说 Minecraft 服务器每秒钟会进行 20 次更新,确保游戏内的红石、生物 AI 等按照正常工作。 + +:::warning + +TPS 只是最基础的量化卡顿程度。并不是 TPS 高,玩家就感受不到卡顿,也不是 TPS 低就一定会感受到非常卡顿。这是因为,TPS 只是计算一个平均值,如果某一个 Tick 花费了 800ms ,而剩下的 18 Tick 只花费了 200ms,即使计算出的 TPS 为 19 但玩家会感受到的 800ms 的滞后。下文提到的 MSPT 能够更加精准量化卡顿程度。 + +::: + +## MSPT + +MSPT(Milliseconds 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),显示更好看。 diff --git a/docs/准备工作/基础知识/如何评判服务器流畅程度.md b/docs/准备工作/基础知识/如何评判服务器流畅程度.md deleted file mode 100644 index efa1d0d0a2..0000000000 --- a/docs/准备工作/基础知识/如何评判服务器流畅程度.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -sidebar_position: 1 ---- - -# 如何评判服务器流畅程度 - -评判服务器流畅程度需要结合两个重要指标,即**TPS**和**MSPT** - -## TPS - -TPS(Ticks Per Second)(每秒tick数)正常情况下的tps应该为20,也就是说MC服务器每秒钟会进行20次计算更新,确保游戏内的红石、生物AI等按照正常游戏行为工作 - -:::danger - -如果你的tps低于19,就会出现玩家回弹,红石机器不可用,吃个食物都要几秒钟的卡顿情况,会严重劝退玩家 - -::: - -## MSPT - -MSPT(Milliseconds Per Tick)(就是每进行一次tick所花费的毫秒数) - -如果MSPT数值较低,说明服务器可以迅速快速进行每次tick,游戏运行更为流畅。反之,如果MSPT过高,意味着每次tick所需的时间变长,游戏的运行速度就会变慢,进而影响到整体的TPS。 - -影响MSPT的东西很多,比如区块生成,AI计算都会影响MSPT - -## 查看tps和mspt - -推荐安装[TpsBar](https://hangar.papermc.io/jmp/TabTPS),虽说服务器自带,但是这样显示更好看 From 4604be78316e97b03e4c87fc12768c1dbb0c32e3 Mon Sep 17 00:00:00 2001 From: Radiation-pi <96102795+Radiation-pi@users.noreply.github.com> Date: Sun, 19 May 2024 12:17:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Create=20=E4=BB=80=E4=B9=88=E6=98=AF?= =?UTF-8?q?=E5=A4=9A=E7=BA=BF=E7=A8=8B.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/准备工作/基础知识/什么是多线程.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/准备工作/基础知识/什么是多线程.md diff --git a/docs/准备工作/基础知识/什么是多线程.md b/docs/准备工作/基础知识/什么是多线程.md new file mode 100644 index 0000000000..6773a9e737 --- /dev/null +++ b/docs/准备工作/基础知识/什么是多线程.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 10 +--- + +# 什么是多线程