forked from mirror/NitWikit
优化 部分重构和完善
This commit is contained in:
parent
70858dad9b
commit
9c254e2334
@ -100,104 +100,14 @@ feature-seeds:
|
||||
|
||||
> 主世界推荐配置
|
||||
|
||||
<details>
|
||||
<summary>配置Ⅰ</summary>
|
||||
:::tip
|
||||
|
||||
```
|
||||
anticheat:
|
||||
anti-xray:
|
||||
enabled: true
|
||||
engine-mode: 3
|
||||
hidden-blocks:
|
||||
- copper_ore
|
||||
- deepslate_copper_ore
|
||||
- raw_copper_block
|
||||
- gold_ore
|
||||
- deepslate_gold_ore
|
||||
- iron_ore
|
||||
- deepslate_iron_ore
|
||||
- raw_iron_block
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- lapis_ore
|
||||
- deepslate_lapis_ore
|
||||
- mossy_cobblestone
|
||||
- obsidian
|
||||
- chest
|
||||
- diamond_ore
|
||||
- deepslate_diamond_ore
|
||||
- redstone_ore
|
||||
- deepslate_redstone_ore
|
||||
- clay
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- ender_chest
|
||||
lava-obscures: false
|
||||
max-block-height: 128
|
||||
replacement-blocks:
|
||||
- amethyst_block
|
||||
- andesite
|
||||
- budding_amethyst
|
||||
- calcite
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- deepslate
|
||||
- diorite
|
||||
- dirt
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- granite
|
||||
- gravel
|
||||
- oak_planks
|
||||
- smooth_basalt
|
||||
- stone
|
||||
- tuff
|
||||
update-radius: 2
|
||||
use-permission: false
|
||||
```
|
||||
![test](_images/anticheat/antixray-mode3-1.png)
|
||||
</details>
|
||||
如果使用了 Raytraceantixray 请务必使用配置 Ⅲ 。
|
||||
|
||||
:::
|
||||
|
||||
<details>
|
||||
<summary>配置Ⅱ</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
anti-xray:
|
||||
enabled: true
|
||||
engine-mode: 1
|
||||
hidden-blocks:
|
||||
- chest
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- copper_ore
|
||||
- deepslate_copper_ore
|
||||
- raw_copper_block
|
||||
- diamond_ore
|
||||
- deepslate_diamond_ore
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- gold_ore
|
||||
- deepslate_gold_ore
|
||||
- iron_ore
|
||||
- deepslate_iron_ore
|
||||
- raw_iron_block
|
||||
- lapis_ore
|
||||
- deepslate_lapis_ore
|
||||
- redstone_ore
|
||||
- deepslate_redstone_ore
|
||||
lava-obscures: false
|
||||
max-block-height: 64
|
||||
replacement-blocks: []
|
||||
update-radius: 2
|
||||
use-permission: false
|
||||
|
||||
```
|
||||
![test](_images/anticheat/antixray-mode1-1.png)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>配置Ⅲ-*推荐使用*</summary>
|
||||
<summary>配置 Ⅰ - *带宽消耗较大,效果非常好*</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
@ -255,6 +165,102 @@ anticheat:
|
||||
![test](_images/anticheat/antixray-mode2-1.png)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>配置Ⅱ - *带宽消耗中等,效果中等</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
anti-xray:
|
||||
enabled: true
|
||||
engine-mode: 3
|
||||
hidden-blocks:
|
||||
- copper_ore
|
||||
- deepslate_copper_ore
|
||||
- raw_copper_block
|
||||
- gold_ore
|
||||
- deepslate_gold_ore
|
||||
- iron_ore
|
||||
- deepslate_iron_ore
|
||||
- raw_iron_block
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- lapis_ore
|
||||
- deepslate_lapis_ore
|
||||
- mossy_cobblestone
|
||||
- obsidian
|
||||
- chest
|
||||
- diamond_ore
|
||||
- deepslate_diamond_ore
|
||||
- redstone_ore
|
||||
- deepslate_redstone_ore
|
||||
- clay
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- ender_chest
|
||||
lava-obscures: false
|
||||
max-block-height: 128
|
||||
replacement-blocks:
|
||||
- amethyst_block
|
||||
- andesite
|
||||
- budding_amethyst
|
||||
- calcite
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- deepslate
|
||||
- diorite
|
||||
- dirt
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- granite
|
||||
- gravel
|
||||
- oak_planks
|
||||
- smooth_basalt
|
||||
- stone
|
||||
- tuff
|
||||
update-radius: 2
|
||||
use-permission: false
|
||||
```
|
||||
![test](_images/anticheat/antixray-mode3-1.png)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>配置Ⅲ - *降低带宽消耗,效果较差*</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
anti-xray:
|
||||
enabled: true
|
||||
engine-mode: 1
|
||||
hidden-blocks:
|
||||
- chest
|
||||
- coal_ore
|
||||
- deepslate_coal_ore
|
||||
- copper_ore
|
||||
- deepslate_copper_ore
|
||||
- raw_copper_block
|
||||
- diamond_ore
|
||||
- deepslate_diamond_ore
|
||||
- emerald_ore
|
||||
- deepslate_emerald_ore
|
||||
- gold_ore
|
||||
- deepslate_gold_ore
|
||||
- iron_ore
|
||||
- deepslate_iron_ore
|
||||
- raw_iron_block
|
||||
- lapis_ore
|
||||
- deepslate_lapis_ore
|
||||
- redstone_ore
|
||||
- deepslate_redstone_ore
|
||||
lava-obscures: false
|
||||
max-block-height: 64
|
||||
replacement-blocks: []
|
||||
update-radius: 2
|
||||
use-permission: false
|
||||
|
||||
```
|
||||
![test](_images/anticheat/antixray-mode1-1.png)
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
如何在下界使用其他的 Anti-Xray 配置呢?找到 `/world_nether/paper-world.yml`
|
||||
@ -262,7 +268,7 @@ anticheat:
|
||||
将下列你喜欢的配置进行复制粘贴即可
|
||||
|
||||
<details>
|
||||
<summary>下界配置Ⅰ</summary>
|
||||
<summary>下界配置 Ⅰ - *带宽压力翻倍,效果好,客户端 FPS 可能下降*</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
@ -296,7 +302,7 @@ anticheat:
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>下界配置Ⅱ</summary>
|
||||
<summary>下界配置 Ⅱ - *带宽占用略微降低,效果一般(但下届合金一定会被隐藏)*</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
@ -320,7 +326,7 @@ anticheat:
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>下界配置Ⅲ</summary>
|
||||
<summary>下界配置 Ⅲ - *带宽占用较大提升,效果较好*</summary>
|
||||
|
||||
```
|
||||
anticheat:
|
||||
@ -353,53 +359,36 @@ anticheat:
|
||||
|
||||
</details>
|
||||
|
||||
这边推荐使用**下界配置Ⅰ**
|
||||
|
||||
那么终末地配置呢?
|
||||
|
||||
我们推荐在终末地地图不使用假矿
|
||||
|
||||
所以world_the_end/paper.world.yml的配置
|
||||
|
||||
我们的推荐如下
|
||||
在末地由于没有矿物,我们推荐将 `world_the_end/paper.world.yml` 进行以下配置即可。
|
||||
|
||||
```
|
||||
|
||||
anticheat:
|
||||
anti-xray:
|
||||
enabled: false
|
||||
|
||||
|
||||
```
|
||||
|
||||
注意,如果你需要隐藏暴露在空气中的方块,需要将 `air` 添加到 `hidden-blocks` 和 `replacement-blocks` ,但这非常影响性能,不推荐。
|
||||
|
||||
:::info
|
||||
|
||||
---
|
||||
将配置文件复制到对应 yml 文件中时,如果已经存在,请相应的进行覆盖而不是简单复制到最后。
|
||||
|
||||
至此,这就是你不用插件就能做到反矿物透视的所有事
|
||||
如果并不存在类似的文本,那么请直接复制到对应世界 yml 中。
|
||||
|
||||
:::
|
||||
|
||||
### Anti-xray 插件
|
||||
|
||||
#### RayTraceAntiXray(非常推荐)
|
||||
[RayTraceAntiXray](https://builtbybit.com/resources/raytraceantixray.24914/),[开源](https://github.com/stonar96/RayTraceAntiXray)付费且仅售 7 美元。
|
||||
|
||||
[下载链接(7 美元)](https://builtbybit.com/resources/raytraceantixray.24914/)
|
||||
是一款用于隐藏 paper 服务器中使用 `engine-mode: 1` 时暴露在空气中的未隐藏方块的插件。
|
||||
|
||||
用于服务器端异步多线程光线追踪的 Paper 插件,使用 Paper Anti-Xray 引擎模式 1 隐藏暴露在空气中的矿石。
|
||||
其使用了异步多线程光线追踪,判断玩家是否能看到目标方块,从而在玩家能够看到目标方块时发送真实方块信息。
|
||||
|
||||
可以优化自带的Anti-Xray,减小服务器的负担。项目是开源的,也可[自行构建](https://github.com/stonar96/RayTraceAntiXray)
|
||||
|
||||
#### RaytraceAntiXray(20欧元)(推荐)
|
||||
|
||||
[下载链接(20 欧元)](https://builtbybit.com/resources/raytraceantixray-ores-entities-tiles.41896/)
|
||||
|
||||
插件特色
|
||||
* 支持版本极广(1.8-最新)(1.13.2之前可是连raytrace方法都没)
|
||||
* 支持实体隐藏
|
||||
* 支持奖励箱,刷怪笼之类的隐藏
|
||||
可以优化自带的 Anti-Xray ,减小服务器的带宽开销,如需构建请自行构建。
|
||||
|
||||
:::warning
|
||||
|
||||
在使用 Paper 及其 Fork 时。请停止使用[Orebfuscator](https://modrinth.com/plugin/orebfuscator)等假矿插件。换用 Paper 自带的 Anti-Xray。
|
||||
在使用 Paper 及其 Fork 时。请停止使用 [Orebfuscator](https://modrinth.com/plugin/orebfuscator) 等假矿插件。换用 Paper 自带的 Anti-Xray。
|
||||
|
||||
:::
|
@ -1,32 +1,32 @@
|
||||
---
|
||||
title: 怎么让大佬帮我
|
||||
title: 怎么让大佬帮我性能分析
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# 怎么让大佬帮我
|
||||
# 怎么让大佬帮我性能分析
|
||||
|
||||
1. 检查你的服务器有没有安装Spark插件, 尝试`/spark`命令或者`/pl`看看有没有Spark
|
||||
1. 检查你的服务器有没有安装 Spark 插件, 尝试 `/spark` 命令或者 `/pl` 看看有没有 Spark
|
||||
|
||||
如果没有, 手动安装一下[Spark](performance-analysis.md)
|
||||
如果没有,手动安装一下 [Spark](performance-analysis.md)
|
||||
|
||||
2. 开启Spark记录
|
||||
2. 开启 Spark 记录
|
||||
|
||||
```
|
||||
spark profiler start
|
||||
/spark profiler start
|
||||
```
|
||||
|
||||
![](_images/怎么让大佬帮我/spark_start.png)
|
||||
|
||||
在你服务器卡顿的时候开启, **一段时间后**结束它
|
||||
在你服务器卡顿的时候开启, **一段时间后** 结束它
|
||||
|
||||
3. 结束Spark记录
|
||||
3. 结束 Spark 记录
|
||||
|
||||
```
|
||||
spark profiler stop
|
||||
/spark profiler stop
|
||||
```
|
||||
|
||||
它会给你一个链接, 你把这个链接发给大佬并**礼貌的**请求他帮助你
|
||||
它会给你一个链接,你把这个链接发给大佬并 **礼貌的** 请求帮助你
|
||||
|
||||
注:链接位置在下方图片中红框标记的部分
|
||||
注:链接位置在下图中红框标记的部分
|
||||
|
||||
![](_images/怎么让大佬帮我/spark_stop.png)
|
||||
|
@ -5,9 +5,11 @@ sidebar_position: 3
|
||||
|
||||
# 调服务端配置
|
||||
|
||||
没有适用于所有服务器的设置. 您应该理解每个配置选项,并根据服务器的最佳参数与服务器硬件、玩家数量和服务器性质等调整参数. 所以参数因服而异.
|
||||
没有适用于所有服务器的设置. 您应该理解每个配置选项,并根据服务器的最佳参数与服务器硬件、玩家数量和服务器性质等调整参数.
|
||||
|
||||
随着进入游戏后期,服务器工作量会随着机器或者玩家增加而逐渐增加,因此服务器优化不是一次性的任务,而是持续的努力.
|
||||
所以参数因服而异,随着进入游戏后期,服务器工作量会随着机器或者玩家增加而逐渐增加,
|
||||
|
||||
因此服务器优化不是一次性的任务,而是持续的努力.
|
||||
|
||||
准备好你的脑子,以下的推荐参数仅作为参考,具体数字请自行尝试:
|
||||
|
||||
@ -34,7 +36,9 @@ sidebar_position: 3
|
||||
|
||||
:::
|
||||
|
||||
# 可爱的Paper酱
|
||||
<details>
|
||||
|
||||
# 可爱的 Paper 酱
|
||||
|
||||
![](https://paper-chan.moe/content/images/2022/09/Paper-Chan-Banner-2022-Standard-3.jpg)
|
||||
|
||||
@ -49,3 +53,5 @@ sidebar_position: 3
|
||||
![](https://paper-chan.moe/content/images/2023/03/paperfoliaAPNG.png)
|
||||
|
||||
![](https://paper-chan.moe/content/images/2023/05/Paper-Canvas-with-Folia-v5.png)
|
||||
|
||||
</details>
|
||||
|
@ -7,40 +7,39 @@ sidebar_position: 7
|
||||
|
||||
## 参数
|
||||
|
||||
以下是编写完成的JVM优化参数(至少Java 17 以上)
|
||||
以下是推荐的 JVM 优化参数(至少 Java 17 以上)
|
||||
|
||||
**以下启动参数需要自己补全内存分配(-Xms和-Xmx) 和 服务端核心名(-jar 服务端名字.jar)**
|
||||
|
||||
<details>
|
||||
<summary>Mukul1127 Flag (ZGC)(推荐)</summary>
|
||||
<summary>Mukul1127 Flag Plus - 4 核 8G 以上推荐</summary>
|
||||
|
||||
Mukul1127 Flag Plus是现代的启动参数,使用ZGC作为垃圾回收,**注意:Mukul1127 Flag Plus至少需要4c8g以上环境才可以发挥出优势,4c8g一下请使用aikar flag plus**,Mukul1127 Flag Plus需要Java17以上!
|
||||
Mukul1127 Flag Plus 是现代的启动参数,使用 ZGC 作为垃圾回收,**注意:Mukul1127 Flag Plus至少需要4c8g以上环境才可以发挥出优势,更低配置请使用 Aikar flag plus**,Mukul1127 Flag Plus 需要 Java 17 以上!
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive
|
||||
```
|
||||
|
||||
如果你使用Java 21 以上,你可以将`-XX:-ZProactive`换`-XX:+ZGenerational`,Java 22以上必须切换
|
||||
如果你使用Java 21 以上,你可以将`-XX:-ZProactive`换`-XX:+ZGenerational`,Java 22以上必须切换
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Mukul1127 Flag (ZGC)(GraalVM版本)(推荐)</summary>
|
||||
|
||||
GraalVM Java 17+ 的参数,
|
||||
<summary>Mukul1127 Flag - 使用 GraalVM 时推荐</summary>
|
||||
|
||||
GraalVM Java 17+ 的参数,
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive
|
||||
```
|
||||
|
||||
如果你使用Java 21 以上,你可以将`-XX:-ZProactive`换`-XX:+ZGenerational`,Java 22以上必须切换
|
||||
如果你使用Java 21 以上,你可以将`-XX:-ZProactive`换`-XX:+ZGenerational`,Java 22以上必须切换
|
||||
|
||||
### 以下是格外选项
|
||||
|
||||
更激进的内联,在 Graal 中通过`-Dgraal.BaseTargetSpending=160`(默认为 120)和 OpenJDK 中的其他一些标志。具有较大缓存的 CPU 可能会从中受益。
|
||||
更激进的内联,在 Graal 中通过 `-Dgraal.BaseTargetSpending=160` (默认为 120)和 OpenJDK 中的其他一些标志。具有较大缓存的 CPU 可能会从中受益。
|
||||
|
||||
`-Dgraal.OptWriteMotion=true`和`-Dgraal.WriteableCodeCache=true`,它们看起来不稳定,但在 GraalVM 22.3.0+ 中可能更稳定
|
||||
`-Dgraal.OptWriteMotion=true` 和 `-Dgraal.WriteableCodeCache=true` ,它们看起来不稳定,但在 GraalVM 22.3.0+ 中可能更稳定
|
||||
|
||||
</details>
|
||||
|
||||
@ -49,7 +48,7 @@ java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA
|
||||
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -XX:+UseG1GC -XX:MaxGCPauseMillis=37 -XX:+PerfDisableSharedMem -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=23 -XX:G1ReservePercent=20 -XX:SurvivorRatio=32 -XX:G1MixedGCCountTarget=3 -XX:G1HeapWastePercent=20 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:GCTimeRatio=99 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -XX:+UseG1GC -XX:MaxGCPauseMillis=37 -XX:+PerfDisableSharedMem -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=23 -XX:G1ReservePercent=20 -XX:SurvivorRatio=32 -XX:G1MixedGCCountTarget=3 -XX:G1HeapWastePercent=20 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:GCTimeRatio=99 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
|
||||
```
|
||||
|
||||
</details>
|
||||
@ -67,35 +66,51 @@ java -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+Unlo
|
||||
|
||||
### 内存优化
|
||||
|
||||
如果服务器内存足够,可以加上此参数`-XX:-ZUncommit`,要求Jvm总是提前把要用的内存申请好,并且阻止Jvm把临时空出来的内存还给系统
|
||||
如果服务器内存足够,可以加上此参数 `-XX:-ZUncommit` ,要求 JVM 总是提前把要用的内存申请好,
|
||||
|
||||
并且阻止 JVM 把临时空出来的内存还给系统。这会加快短时间有大量内存的需求时的速度。
|
||||
|
||||
### 大页支持
|
||||
|
||||
当然,在动手前,让我们先试一试是不是系统已经支持了这项功能 ,在控制台执行此命令
|
||||
当然,在动手前,让我们先试一试是不是系统已经支持了这项功能 ,在控制台执行此命令
|
||||
|
||||
```shell
|
||||
java -Xlog:gc+init -XX:+UseLargePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果你像我一样, 有一行 `UseLargePages disabled, no large pages configured and available on the system. `那么就说明当前系统并不支持大页,不过不要急,可以试一下这一行命令 `java -Xlog:gc+init -XX:+UseTransparentHugePages -Xmx1g -version` ,如果看到`Large Page Support: Enabled (Transparent)`,表示你的系统支持透明大页
|
||||
如果出现了以下字样,那么说明不完全兼容:
|
||||
|
||||
但是如果你依然不支持或者想要追求极致性能,可以去百度搜索当前的系统如何开启大页,这里就不再过多的赘述了。(LargePages对服务器提升相当巨大)
|
||||
```
|
||||
UseLargePages disabled, no large pages configured and available on the system.
|
||||
```
|
||||
|
||||
如果支持LargePages,加上此参数`-XX:+UseLargePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS`
|
||||
那么就说明当前系统并不支持大页,不过不要急,可以试一下这一行命令:
|
||||
|
||||
如果支持TransparentHugePages(不要把两个都加上,优先LargePages),加上此参数`-XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS`
|
||||
```
|
||||
java -Xlog:gc+init -XX:+UseTransparentHugePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果看到 `Large Page Support: Enabled (Transparent)` ,表示你的系统支持透明大页
|
||||
|
||||
但是如果你依然不支持或者想要追求极致性能,可以去百度搜索当前的系统如何开启大页,
|
||||
|
||||
这里就不再过多的赘述了。(LargePages对服务器提升相当巨大)
|
||||
|
||||
如果支持 LargePages ,加上此参数 `-XX:+UseLargePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS`
|
||||
|
||||
如果支持 TransparentHugePages (不要把两个都加上,优先LargePages),加上此参数 `-XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS`
|
||||
|
||||
### SIMD
|
||||
|
||||
如果你使用的是Pufferfish的分支(Purpur,Leaf,Leaves,Gale),你可以添加此参数`--add-modules=jdk.incubator.vector`
|
||||
如果你使用的是 Pufferfish 的分支(Purpur,Leaf,Leaves,Gale),你可以添加此参数 `--add-modules=jdk.incubator.vector`
|
||||
|
||||
### 下载源加速
|
||||
|
||||
默认的SpigotLibraryLoader下载源在国内访问很慢,如果你使用的是Leaf,你可以添加`-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public`参数启动国内下载源
|
||||
默认的 SpigotLibraryLoader 下载源在国内访问很慢,如果你使用的是Leaf,你可以添加 `-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public` 参数启动国内下载源
|
||||
|
||||
## 参数解释
|
||||
|
||||
TODO
|
||||
TODO
|
||||
|
||||
## JDK
|
||||
|
||||
|
@ -5,7 +5,7 @@ sidebar_position: 1
|
||||
|
||||
# 概览
|
||||
|
||||
优化不是装插件,而是清理服务器的卡顿因素,由于 Minecraft 本身的性能低下、部分插件作者并没有优化代码的意识、服务器实体过多等。
|
||||
优化是做减法,清理服务器的卡顿因素,由于 Minecraft 本身的性能低下、部分插件作者并没有优化代码的意识、服务器实体过多等。
|
||||
|
||||
每个服务器可能有自己的卡顿原因,在这部分先做最基础的通用优化,如果你使用后作用不大请参考性能分析板块。
|
||||
|
||||
@ -13,11 +13,9 @@ sidebar_position: 1
|
||||
|
||||
# 第一步 - Java 优化
|
||||
|
||||
:::info
|
||||
为什么选择 Java 优化作为第一步 - 几乎任何情况下,服务器都会因为合适的 Java 受益,
|
||||
|
||||
几乎任何情况下,所有服务器都会因为选择合适的Java而受益,而这本身是最没有代价的,仅仅需要你下载一个小小的 Java 安装程序,或者更改 JVM 参数(大白话来说就是开服参数)。
|
||||
|
||||
:::
|
||||
仅仅需要你下载一个小小的 Java 安装程序,或者更改 JVM 参数(大白话来说就是开服参数)。
|
||||
|
||||
## 选择合适的 Java
|
||||
|
||||
@ -25,11 +23,23 @@ sidebar_position: 1
|
||||
|
||||
## JVM 参数优化
|
||||
|
||||
可以在[ JVM 参数生成器](https://startmc.jakaco.xyz/)生成适合你服务器的基本 JVM 参数,然后复制并保存到你的启动脚本里,然后重启就完成了
|
||||
可以在 [JVM 参数生成器](https://startmc.jakaco.xyz/)生成适合你服务器的基本 JVM 参数,然后复制并保存到你的启动脚本里,然后重启就完成了
|
||||
|
||||
别急,还有一些更高阶的参数。[拓展阅读](https://blog.binklac.com/e6ad4dc21152)
|
||||
|
||||
# 第二步 - 更换核心
|
||||
# 第二步 - 预生成
|
||||
|
||||
什么是预生成 - 预生成就是让服务器在玩家进入之前,预先生成区块对应方块、结构等。
|
||||
|
||||
在 Minecraft 服务器中,生成新区块会消耗大量服务器资源,如果要开启新的地图 / 服务器,建议先预生成地图。
|
||||
|
||||
[Chunky](https://hangar.papermc.io/pop4959/Chunky) 是最常用的预生成插件,通常与 [ChunkyBorder](https://modrinth.com/plugin/chunkyborder) 结合使用,你可以根据自己的喜好自定义边界及形状。
|
||||
|
||||
通常来说,即使你不设置边界,也务必进行预生成大约 1w x 1w 大小的世界。这对降低后期服务器负载很有效。
|
||||
|
||||
预生成时应该注意,默认情况 1.20 原版 1w x 1w 的地图需要 4-5 GB 硬盘。应根据硬盘大小选择世界的预生成大小。
|
||||
|
||||
# 第三步 - 更换核心
|
||||
|
||||
在插件和配置层面能进行的优化其实不多(受限于 API 还有服务端核心),所以最好的方法是更换服务器核心。
|
||||
|
||||
@ -62,13 +72,13 @@ sidebar_position: 1
|
||||
|
||||
</details>
|
||||
|
||||
# 第三步 - 优化服务端配置
|
||||
# 第四步 - 调整服务端配置
|
||||
|
||||
目前,Bilibili上面的配置都是很老的,不推荐使用
|
||||
|
||||
文档里的 [调服务端配置](config.md) 比较新,非常推荐
|
||||
|
||||
# 第四步 - 更换硬件
|
||||
# 第五步 - 更换硬件
|
||||
|
||||
**不要无脑换硬件!** 首先要知道自己的硬件瓶颈在哪里。如果 CPU 负荷过高,建议先排除 CPU 异常占用,再看 CPU 总体占用情况。一般来说服务器卡顿换 CPU 是最有效的,单核性能和 MC 服务器 TPS 几乎呈线性相关,但是换 CPU 几乎就相当于要换一台机器,迁移对于新手来说并不是易事。
|
||||
|
||||
@ -80,15 +90,21 @@ sidebar_position: 1
|
||||
如果发现 CPU 占用和内存占用都不是很高但是服务器卡卡的,请考虑是不是服务器带宽受限导致玩家 ping 值突然升高的问题。请分清楚 TPS 低导致的卡顿,MSPT高导致的卡顿,带宽占满导致的卡顿。
|
||||
:::
|
||||
|
||||
# 第五步 - 更换操作系统
|
||||
# 第六步 - 更换操作系统
|
||||
|
||||
无论在性能还是稳定性, Linux 都比 Windows 更适合用于开服,对于 Linux 根据自己的使用经验选择即可,如果没有使用经验可以先使用 Ubuntu 等主流系统。
|
||||
|
||||
如果想要了解更多请前往进阶[Linux开服教程](/docs/sundry/advance/Linux/tutorial.md)
|
||||
如果想要了解更多请前往进阶 [Linux 开服教程](/docs/sundry/advance/Linux/tutorial.md)
|
||||
|
||||
# 第六步 - 性能分析
|
||||
|
||||
通用的一些解决方法看来已经差不多做好了,每个服务器都有自己最导致滞后的因素,可能是实体太多,可能是玩家机器多,也可能是某些插件写的太屎... 如此,那么应该如何知道服务器为何卡顿呢?对咯! 性能分析!
|
||||
# 第七步 - 性能分析
|
||||
|
||||
**“马克思主义活的灵魂在于对具体问题作具体分析。” - 列宁**
|
||||
|
||||
通用优化已经差不多做好了,而每个服都有自己导致滞后的因素,可能是实体太多,可能是玩家机器多,也可能是某些插件写的太屎...
|
||||
|
||||
如此,那么应该如何知道服务器为何卡顿呢?
|
||||
|
||||
如果你是个完完全全的新手,或者懒得分析,想请教别人分析应该怎么办呢? 请转跳到 [怎么让大佬帮我](ask-for-help.md)
|
||||
|
||||
如果你不想求助别人,亦或者你想有一些进步,请参考 [性能分析](performance-analysis.md)
|
6
docs/maintenance/optimize/parameter-adjustment/misc.md
Normal file
6
docs/maintenance/optimize/parameter-adjustment/misc.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 杂项优化
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
TODO
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 网络优化
|
||||
sidebar_position: 7
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# 网络优化
|
||||
@ -17,13 +17,14 @@ sidebar_position: 7
|
||||
|
||||
### 手动调整
|
||||
|
||||
在 spigot.yml 中可以设置服务器的视野距离
|
||||
在 `spigot.yml` 中可以设置服务器的视野距离
|
||||
|
||||
```
|
||||
view-distance: 8 #视野距离为 8 chunks
|
||||
view-distance: 8
|
||||
#视野距离为 8 chunks
|
||||
```
|
||||
|
||||
如果你使用的默认 10 chunks 的视野距离,可能对于带宽来说有一定的压力,可以酌情减少,
|
||||
如果你使用的默认 10 chunks 的视野距离,可能对于带宽来说有一定的压力,可以酌情减少,建议为 4 - 12。
|
||||
|
||||
### 自动调整
|
||||
|
||||
@ -31,7 +32,7 @@ view-distance: 8 #视野距离为 8 chunks
|
||||
|
||||
## 降低区块加载速度
|
||||
|
||||
在 /config/paper-global.yml 中有关于区块生成的一些参数
|
||||
在 `/config/paper-global.yml` 中有关于区块生成的一些参数
|
||||
|
||||
```
|
||||
chunk-loading-basic:
|
||||
@ -44,7 +45,7 @@ chunk-loading-basic:
|
||||
#服务器发送给单个玩家的最大速率。设置为-1 则禁用。
|
||||
```
|
||||
|
||||
其中 player-max-chunk-send-rate 对应服务器每秒钟最多向玩家发送多少区块包,设置得越低玩家收到完整的地图信息越慢,
|
||||
其中 `player-max-chunk-send-rate` 对应服务器每秒钟最多向玩家发送多少区块包,设置得越低玩家收到完整的地图信息越慢,
|
||||
|
||||
服务器虽然总是会发送几乎同样多的区块信息,但由于发送速度降低,这会降低上行带宽的最大占用率,从而避免大量跑图导致的顿卡。
|
||||
|
||||
@ -52,28 +53,22 @@ chunk-loading-basic:
|
||||
|
||||
Minecraft 服务端会将每个实体的行为实时发送给附近的玩家客户端,这个包通常来说占用是很少的,但是大量玩家处于实体密集型区域时将出现大量带宽占用。
|
||||
|
||||
bukkit.yml 以及 config/paper-world-default.yml 中对于 spawn-limits 做了限制(若二者均有值时取 Paper 的,若 Paper 中为 -1 时取 Bukkit)
|
||||
bukkit.yml 以及 `config/paper-world-default.yml` 中对于 `spawn-limits` 做了限制(若二者均有值时取 Paper 的,若 Paper 中为 -1 时取 Bukkit)
|
||||
|
||||
```
|
||||
spawn-limits:
|
||||
monsters: 70
|
||||
#怪物包括 远古守卫者、末影人、监守者、蠹虫、猪灵蛮兵、流浪者、幻术师、骷髅、潜影贝、僵尸疣猪兽、守卫者、岩浆怪、僵尸村民、僵尸猪灵、卫道士、幻翼、猪灵、史莱姆、末影龙、溺尸、掠夺者、唤魔者、僵尸、蜘蛛、尸壳、恶魂、劫掠兽、疣猪兽、洞穴蜘蛛、女巫、枯萎、末影螨、凋灵骷髅、烈焰人、巨人、爬行者、恼鬼。
|
||||
|
||||
animals: 10
|
||||
#动物包括 猪、北极熊、狐狸、猫、僵尸马、嗅探者、熊猫、兔子、狼、牛、海龟、青蛙、悦灵、行商羊驼、驴、蜜蜂、骆驼、绵羊、蝌蚪、豹猫、鸡、哞菇、马、羊驼、流浪商人、鹦鹉、山羊、骡、骷髅马刷、炽足兽.
|
||||
|
||||
water-animals: 5
|
||||
# 包括鱿鱼和海豚
|
||||
|
||||
water-ambient: 20
|
||||
# 包括鳕鱼、河豚、鲑鱼、热带鱼
|
||||
|
||||
water-underground-creature: 5
|
||||
# 包括发光鱿鱼
|
||||
|
||||
axolotls: 5
|
||||
# 美西螈
|
||||
|
||||
ambient: 15
|
||||
# 只包括蝙蝠,建议0
|
||||
|
||||
@ -96,8 +91,23 @@ entity-tracking-range:
|
||||
|
||||
## 选择更加合理的 AntiXray(反矿物透视)方式
|
||||
|
||||
:::warning
|
||||
|
||||
停止使用 [Orebfuscator](https://modrinth.com/plugin/orebfuscator) 等矿物混淆插件,使用 Paper 自带的矿物混淆。
|
||||
|
||||
使用 Paper 矿物混淆时候,尽量不要在非主世界开启 mode 2 或 mode 3
|
||||
|
||||
***TODO***
|
||||
:::
|
||||
|
||||
参考文档内关于[反矿物透视](/docs/maintenance/anti-cheat/antixray.md)中标明能降低带宽占用的配置。
|
||||
|
||||
## 其他插件
|
||||
|
||||
常见的对带宽可能有一定占用的插件行为有:
|
||||
|
||||
* 某些 TAB / 计分板 / bossbar / actionbar 类插件时高频刷新
|
||||
* 某些写的特别烂的反作弊插件可能会每 tick 都向玩家发送数据包
|
||||
* 某些 **装饰类** 插件大量基于粒子效果或盔甲架的数据包发送
|
||||
* 欢迎补充
|
||||
|
||||
请适当使用使用以上类型的插件。使用时也尽量控制盔甲架、粒子效果等的量。
|
@ -1,3 +1,64 @@
|
||||
---
|
||||
title: 参数优化
|
||||
title: 性能优化
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# 性能优化
|
||||
|
||||
性能优化主要是针对低 TPS 和高 MPST 导致的服务器顿卡或长期不流畅。
|
||||
|
||||
## 降低服务器模拟距离(即 Simulate distance)
|
||||
|
||||
:::tip
|
||||
|
||||
在此之前,你必须了解的是模拟距离(Simulate distance)和视野距离(View distance)区别(下文用 SDT和 VDT 分别指代)。
|
||||
|
||||
模拟距离指的是玩家在这个范围内的游戏行为正常进行,如动物、怪物等 AI 的寻路,生物生成,草地扩散,水流流动等。
|
||||
|
||||
视野距离指的是服务器将发送给玩家的区块的数据包的距离,在这个范围内,游戏行为不一定会继续发生(这取决于 SDT)
|
||||
|
||||
当玩家移动导致一个区域不在玩家的 SDT 中而又在 VDT 中,那么服务器只会读取这个区域的方块信息并发送给玩家。
|
||||
|
||||
而不会对这个区域进行加载。这是各种游戏常见的处理方式,弱化远处的计算能够使得服务器更加流畅。
|
||||
|
||||
:::
|
||||
|
||||
### 手动调整
|
||||
|
||||
在 `spigot.yml` 中可以设置服务器的模拟距离:
|
||||
|
||||
```
|
||||
simulate-distance: 8
|
||||
#模拟距离为 8 chunks
|
||||
```
|
||||
|
||||
如果你使用的默认 10 chunks 的模拟距离,这会非常影响性能,可以酌情减少,建议为 3 - 8。
|
||||
|
||||
### 自动调整
|
||||
|
||||
安装 [View Distance Tweaks](https://www.spigotmc.org/resources/view-distance-tweaks.75164/) 实现自动调整视野距离使得玩家增多时自动减少视野,玩家减少时自动增加视野。
|
||||
|
||||
## 降低区块生成速度
|
||||
|
||||
希望你服务器进行了预生成,如果没有进行的话请阅读 [优化概论](overview.md)
|
||||
|
||||
在 `/config/paper-global.yml` 中有关于区块生成的一些参数
|
||||
|
||||
```
|
||||
chunk-loading-basic:
|
||||
#注:以下的单位均为 chunks / seconds
|
||||
player-max-chunk-generate-rate: -1.0
|
||||
#为每个玩家生成分块的最大速率,设置为-1 则禁用。
|
||||
player-max-chunk-load-rate: 100
|
||||
#任何单个播放器加载块的最大速率,设置为-1 则禁用。
|
||||
player-max-chunk-send-rate: 75
|
||||
#服务器发送给单个玩家的最大速率。设置为-1 则禁用。
|
||||
```
|
||||
|
||||
其中 `player-max-chunk-generate-rate` 对应服务器每秒钟最多为玩家生成多少区块,设置得越低区块生成越慢。
|
||||
|
||||
此时大量跑图的玩家可能会觉得服务器有一些滞后,但是能够保证大多数玩家的游戏体验,这是值得的。
|
||||
|
||||
将 `player-max-chunk-generate-rate` 设置为 20 - 40 应该是合理的值。
|
||||
|
||||
TODO
|
Loading…
Reference in New Issue
Block a user