Minecraft-Java-Edition

為什麼我的伺服器只有 5 個玩家線上時的記憶體使用率如此之高?

  • July 16, 2019

我最近啟動了一個普通的 Linux Minecraft 伺服器 (v1.7.2),並且遇到了高 RAM 使用率導致伺服器斷開連接的問題。我最多分配了 3.5 GB。

我一個小時前重新啟動了伺服器並一直在監視它。我注意到當玩家斷開連接時,記憶體使用量並沒有減少,並且隨著更多玩家加入,記憶體使用量只會增加。

  • 5 名玩家登錄時,RAM 使用率為 63% (2.1 GB)。
  • 伺服器上只有 3 個玩家,記憶體使用率為 58.9%。

啟動伺服器時我也收到此錯誤:

您的平台沒有提供完整的低級 API 來可靠地訪問直接緩衝區。除非明確要求,否則始終首選堆緩衝區以避免潛在的系統不穩定。

我用來啟動伺服器的命令是:

java -Xms512M -X3584M -jar minecraft_server.jar

什麼可能導致高記憶體使用,為什麼當玩家數量減少時它沒有減少?

我看到了一些可能的問題,這些問題可能會幫助您的伺服器以更少的記憶體執行。

玩家視距

在包括我自己在內的許多伺服器上,伺服器屬性文件中的 ViewDistance 參數可能過高。減小該值將導致為玩家載入的區塊減少,但如果您將其設置得太低,即低於 3,那麼您將無法看到足夠遠的距離來玩得開心。

這很容易通過減少 server.properties 文件中的“view-distance”參數來解決。

命令行參數

我發現您在問題中粘貼的問題存在一個小問題:

Java -Xms512M - X3584M -jar minecraft_server.jar

儘管我假設您正在嘗試將記憶體上限設置為 3.5GB,但我找不到只是“X”的 java 參數。這應該是這樣的:

Java -Xms512M - Xmx3584M -jar minecraft_server.jar

或者更簡單的版本:

Java -Xms512M -Xmx3.5G -jar minecraft_server.jar

如果您願意嘗試,每次重新啟動時將最大限制降低 512mb,並測量其性能。在某些奇怪的情況下,您可能會看到實際使用的記憶體有所減少。

使用 Java 7

根據我過去的經驗,在 Ubuntu 伺服器上執行,在 Java7 而不是 Java6 下執行 Craftbukkit 伺服器使用的 RAM 顯著減少。

切換到 Bukkit

儘管這對您來說可能是一個不需要的選項,但它絕對有效。使用 Craftbukit,可以在http://bukkit.org/上下載大量外掛,這些外掛有助於提高伺服器性能並降低資源使用率。

“正常”取決於每個玩家的位置以及載入的塊中發生的情況。

如果玩家分散開,那麼(顯然)會載入更多的塊,並且必須處理更多的生物。此外,紅石裝置將為您的世界添加許多塊更新。

您需要了解您的里程可能會有所不同。有些只能使用 1.5 GB,有些則必須處理 3 GB。您可能根本沒有使用交換空間,而且您的 JRE 版本也很重要。

所以是的,5 人玩時 2 GB 是正常的。

引用自:https://gaming.stackexchange.com/questions/144792