[CentOS] Minecraft Server

回覆文章
Lexaul
文章: 231
註冊時間: 2019-10-18, 14:28

[CentOS] Minecraft Server

文章 Lexaul » 2019-12-13, 13:49

PaperMC:(安裝詳見下文官方伺服器處)
https://papermc.io/downloads
PaperMC優化:
https://forum.gamer.com.tw/Co.php?bsn=18673&sn=813637

paper.yml
「optimize-explosions」
預設值為:false
建議改為:true
這個設定會使用一個更有效率的爆炸演算法,他會直接移除爆炸範圍內死亡的實體。

「mob-spawner-tick-rate」
預設值為:1
建議改為:2 ~ 3
這個設定為伺服器檢查生怪磚的生怪條件(才能生怪)的時間間隔,單位為 tick。
一般而言,設定為「2」理論上不會影響到原生 Minecraft 的生怪行為。不過如果生怪磚讓你的伺服器很當,你可以調整看看。

「disable-chest-cat-detection」
預設值為:false
建議改為:true
這會讓伺服器不檢查箱子上有沒有豹貓或貓坐在上面,這樣無論上面有沒有貓玩家都可以直接打開箱子。這會改善伺服器效能。

「use-hopper-check」
預設值為:false
建議改為:true
在 spigot.yml 設定檔裡面的「hopper-check」選項目前沒有在使用,這樣你幾乎無法沒辦法照你自己的想法來優化漏斗設定。這個選項重新啟用了它。

「container-update-tick-rate」
預設值為:1
建議改為:3 ~ 4
設定物品欄的刷新頻率(玩家背包、箱子之類的)。建議不要設定超過 5,不然物品欄可能會出問題。

「queue-light-updates」
預設值為:false
建議改為:true
目前異步傳遞燈光的實作在 1.9 有點問題,這個選項能暫時先實作它,這會提升一些效能。

「fire-physics-event-for-redstone」
預設值為:true
建議改為:false
這個選項會阻止紅石觸發 BlockPhysicsEvent 事件。在某些伺服器上,紅石可以超快速的連閃,然後因為超多插件都會監聽 BlockPhysicsEvent 事件的觸發而不處理紅石的 BlockPhysicsEvent 事件,這會造成 CPU 資源的浪費。這大大減少了因紅石而產生的 lag 現象。

「grass-spread-tick-rate」
預設值為:1
建議改為:2 ~ 4
草地更新的間隔時間(單位:tick)。把這個選項調高會讓草地蔓延的比較慢,設定這個之前請確定這個變更對你的伺服器遊戲模式不會產生影響。例如,在空島伺服器上你可能完全不會想要變更這個選項。

spigot.yml

「late-bind」
預設值為:false
建議改為:true
這不會影響伺服器效能,而且可能讓某些插件無法正常運作。這個選項讓你的伺服器直到所有插件都啟用完成後才開始接受玩家的加入。我覺得這個會改善安全性,不過你啟用它也無傷大雅。

「mob-spawn-range」
預設值為:4
建議改為:3
設定生怪能生多遠。我們接下來要降低生怪速度跟生怪數量,因此降低這個選項的值能讓玩家以為我們根本沒有減少生怪數量。

「entity-activation-range」
預設值為:animals: 32, monsters: 32, misc: 16
建議改為:animals: 6, monsters: 16, misc: 2
降低這些值能讓伺服器延遲處理在這些範圍以外的實體,動物一般來說延遲一點點沒關係。Misc 是指,舉例來說,像是地面上的物品。將其設定為 1 可能導致物品無法在水中流動。這個選項會大幅改善實體處理效能!

「hopper-transfer」、「hopper-check」與「hopper-amount」
預設值為:transfer: 8, check: 8, amount: 1
建議改為:transfer: 24, check: 24, amount: 3
這會讓漏斗減緩三倍的時間,但是讓它一次移動 3 個方塊。這可能導致某些原生 Minecraft 行為出現問題,例如基於漏斗時間的紅石連閃器。這個選項會大幅改善漏斗的效能。如果要使用這些選項,你需要在 paper.yml 內 設定「use-hopper-check」為「true」

「max-entity-collisions」
預設值為:8
建議改為:2
這設定每個 tick 中,實體可以碰撞的次數。這個將會大幅改善生怪塔對於伺服器的影響。

「merge-radius」
預設值為:item: 2.5, exp: 3.0
建議改為:item: 3.5, exp: 6.0
這個選項設定了地面上的物品與經驗值小球的有效合併範圍之半徑。什麼是合併?舉例來說,如果你設定它為 3.5,這表示如果在 3.5 個方塊半徑的地上有很多掉落物,Spigot 會將它全部合併到一組以大幅改善伺服器效能。基本上把 exp 的合併範圍半徑調高一點不會有什麼壞處。

「view-distance」
預設值為:10
建議改為:4 ~ 5
有多少個 chunk 會同時發送給玩家。不調整為 3 的原因是如果這樣做將會導致終界珍珠可能會傳送你到還沒載入的 chunk 上而沒辦法使用。

bukkit.yml

「spawn-limits」
預設值為:monsters: 70, animals: 15, water-animals: 5, ambient: 15
建議改為:monsters: 50, animals: 10, water-animals: 3, ambient: 4
這些值並不是每個玩家可以生怪的數量,不過它們差不多是設定那個方面的內容。將他們調低一點能讓玩家附近生怪的數量降低一些。你伺服器上的玩家如果很多,建議將這個設定低一點。

「chunk-gc」
預設值為:period-in-ticks: 600, load-threshold: 0
建議改為:period-in-ticks: 300, load-threshold: 300
這個選項將讓伺服器自記憶體中移除玩家視野外的 chunk 資料,這將節省一些記憶體與一些潛在的 CPU 資源。

「ticks-per.monster-spawns」
預設值為:1
建議改為:2 ~ 5
這個選擇讓你可以調整伺服器每次嘗試生出攻擊性生物的間隔。這適用於整個伺服器,而不是單個玩家。將這個設定為高一點將大幅減少生怪的數量。基本上調整為 2 就可以了,除非你的伺服器有大量 mobSpawn 函式造成的 lag 或單純是它生太多怪了。

server.properties

「network-compression-threshold」
預設值為:256
若是單伺服器運作,建議值為:512
若這個伺服器運作在同個內網內的 BungeeCord 或 Waterfall 背後,建議值為:-1

這個選項調整了伺服器如果要壓縮一個封包,該封包需要達到的大小。將它設高一點可以節省一些 CPU 資源,但是會多耗一些頻寬。將它設定為 -1 以停用。
如果這個伺服器跑在一個在本機或是在同個資料中心(ping 小於 2 毫秒)的代理(BungeeCord 或 Waterfall)背後,停用這個功能有益而無害。如果你的玩家直接連線到這個伺服器,請將這個設定為 512,這會省下一些 CPU 資源而不會消耗太多頻寬。

Java

記得永遠都要使用最新版本的 Java(目前是 Java 8)。很多功能只有 Java 8 才有被實作或是優化。如果你非用 Java 7 不可, 記得在你的開服指令上加上 -XX:MaxPermSize=128M。

很多教學可能只提到 -Xmx 設定,是沒錯,它會優化你的伺服器效能。但是,Java 有個叫垃圾收集器的東西,他會定期清除 Java 程式中用不到的東西,讓伺服器提升效能及節省更多記憶體。因此我們需要對垃圾收集器做一些調整。

以下假設你想分配 6GB 的記憶體給 PaperSpigot:(請至少留 2 GB 的記憶體給你的作業系統)

  java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -XX:+AlwaysPreTouch -Dusing.aikars.flags=mcflags.emc.gs -jar paperclip.jar

用這個當做你的開服指令應該能讓整體的效能提升非常多,減少伺服器突然的 lag。CPU 使用率可能會稍微高一點點,但是整體而言它會讓伺服器跑的更穩更順。

如果你的伺服器有超過 10G 的 RAM,請將:

  -XX:G1MaxNewSizePercent=80
  改為 -XX:G1MaxNewSizePercent=60

  -XX:G1NewSizePercent=50
  改為 -XX:G1NewSizePercent=35

  -XX:InitiatingHeapOccupancyPercent=10
  改為 -XX:InitiatingHeapOccupancyPercent=15

基本上這背後的原理全部都是超 geeky 的東西,應該是很少人聽得懂啦 lolrz 就不多做解釋了。

官方伺服器安裝
參考網址: https://linuxize.com/post/how-to-instal ... -centos-7/

創建伺服器資料夾,下載伺服器安裝檔

代碼: 選擇全部

mkdir server_1.15
wget https://*URL*/server.jar
執行java

代碼: 選擇全部

-Xmx 4096M -Xms 1024M -jar server.jar nogui
設定server.properties

代碼: 選擇全部

rcon
port
ip
設定服務

代碼: 選擇全部

vi /etc/systemd/system/minecraft.service

[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms512M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop

[Install]
WantedBy=multi-user.target
設定備份

代碼: 選擇全部

vi backup.sh

[email protected]
github.com/Lexaul

回覆文章