java - Minecraft 服务器使用所有 CPU
问题描述
我想在我的树莓派 4-b 上使用 8 GB RAM 创建一个私有的 minecraft 服务器(在 1.17.1 上)。
我已经安装了 64 位 Ubuntu 服务器和 openJDK 17,但实际上当我启动服务器时,它会在几秒钟后回复我。
跟不上!服务器是否超载?...
我还用 htop 检查了进程,我可以看到 minecraft 至少需要大约 30 个线程并使用我所有的 CPU(400%),所以我试图限制线程的数量,但是这很有效......任何人都知道我能做什么请优化我的我的世界服务器?
还有我用于启动我的 minecraft 服务器的 shell 脚本:
java -jar -server -Xmx4G -Xms1024M -XX:CICompilerCount=4 server.jar nogui
另外,这是我的时间:
Pct Total Pct Tick Total Avg PerTick Count Event
24.99% 24.90% 83.62 s 12.45 ms 1.0 6.7k world - doTick
19.14% 19.07% 64.03 s 9.54 ms 1.0 6.7k world - tickEntities
6.01% 5.99% 20.10 s 2.99 ms 1.0 6.7k world_nether - doTick
4.41% 4.39% 14.74 s 2.19 ms 1.0 6.7k world_the_end - doTick
1.39% 9,303.90% 4.65 s 4,651.95 ms 0.0 0.0k World Save
0.44% 0.43% 1.46 s 0.22 ms 1.0 6.7k world_nether - tickEntities
0.42% 0.41% 1.39 s 0.21 ms 1.0 6.7k world - tracker
0.20% 0.20% 0.68 s 0.10 ms 1.0 6.7k world_the_end - tickEntities
0.10% 0.10% 0.32 s 0.05 ms 1.0 6.7k world_nether - tracker
0.03% 0.03% 0.11 s 0.02 ms 1.0 6.7k world_the_end - tracker
解决方案
从您的服务器时间来看,有这一行:
1.39% 9,303.90% 4.65 s 4,651.95 ms 0.0 0.0k World Save
它代表了您的大部分问题。比如不是因为:
- 插件:无法快速修复(通过向插件所有者报告/删除它)
- 不是 bukkit 事件问题
- 不勾选实体(实体太多)
- 内存太大
比如是因为save,什么会造成这个问题:
- RAM:8Go 可以容纳超过 50 个玩家(包括插件),所以显然没有。
- Java:JDK 17 是最新的,所以我认为很难有这么几个问题
- CPU:你说这个。有可能,但是比如能在这种类型的产品上运行,不应该是这样,也不应该超过9k%。
- 存储:我认为你的存储不好。它不是 SSD,因此您的整个服务器都在等待保存它。可以用 spigotmc 上的这个线程来证明。
你怎么能解决它?
如果不购买新的存储,这显然很困难。
您可以尝试从不保存,除非没有任何玩家,例如。
您还可以尝试减少所有可以产生存储节省的功能:
- 升级自动保存(在
bukkit.yml
) - 渲染距离(英寸
server.properties
) - 升级物品消失,箭头...(中
spigot.yml
) - 降级生成限制(in
bukkit.yml
)
推荐阅读
- python - Django allauth 注册按钮突然停止工作
- shopify - 在 Shopify 中更改现有应用的授权 URL
- tensorflow - 如何在没有 TF-slim 的情况下使用多个预训练模型?
- android - 发布用于生产 React Native 的应用程序
- javascript - TypeScript - 数字更大或更小验证仅在数字具有相同“长度”时响应
- python - 解析数据框和 fastafile
- hadoop - 通过 Knox 获取到 Hive 的 JDBC 连接时出错
- go - 我如何查询除今天创建的值之外的所有值?
- android - 如何在没有提示的情况下以编程方式安装 android 应用程序,
- java - 保存在一个存储库中并使其他存储库反映保存