请仔细观看本文档,以便于快速有效地诊断你的问题,拜托~

服务器卡顿分类及优化策略

服务器卡顿问题通常可以分为三大类:内存不足、CPU单核性能不足以及网络卡顿。在着手优化之前,必须先诊断出导致卡顿的具体原因。

1. 内存不足导致卡顿

诊断方法:
要判断服务器是否因内存不足而卡顿,可以查看控制台的内存占用情况。如果内存可用值不足1GB,服务器就有崩溃的风险。

优化策略:

  • 安装优化模组: 减少内存占用,例如安装垃圾清理模组和实体清理模组。
  • 升级服务器内存: 可在海绵科创官方网站在线升级配置。

2. CPU单核性能不足导致卡顿

服务器内提示 [Server thread/WARN]: Can't keep up! Is the server over loaded? Running xxxxms or 40 ticks beh
MOD过多,红石机器过多、各种刷村民类似的生物机器过多、实体【生物、地上的物品】过多、跑图等都会增加服务器的负载

诊断方法:
Minecraft的多核心优化并不理想,即使CPU使用率分配了800%[8核心],服务器也可能在400%[四核心]后出现卡顿。这是因为游戏无法有效利用所有核心,导致性能瓶颈。当然,多核心可以大幅度提升服务器加载时的速度,但无法提升服务器加载完成后运行时的速度[4核以上]。

优化策略:

  • 降低服务器视距: 调整视距为4-6,减少计算负担。
  • 升级CPU型号: 提升单核心性能。单核性能排序如下:
    • 普惠型:≈380分
    • 增强型:≈520分
    • 高频型:≈650分
    • 发烧型:≈850分

因为我的世界是一款单核游戏,只有在少部分情况下才会吃多核,因此,提升单核性能比单纯升级核心数要好(除非你是多线程服务端)

3. 网络卡顿导致

要看出是不是网络的问题很简单,假设服务器里有5个人,只有某个人卡顿那基本上就算是网络问题,也就是说,有人卡有人不卡那就是网络问题,通常出现这种问题的是在免费型的节点,且卡顿的基本上都是移动网络,为啥移动网络会卡?因为移动网络的跨网结算有问题,高峰期就是会出现不稳定、丢包甚至无法连接服务器的问题,这并不是某一方的问题,而是移动网络自身的问题,为什么付费节点没问题,是因为付费节点采用了三网聚合BGP,你可以简单的理解为付费节点是接入了电信、联通、移动三个独立的线路,当你是移动线路访问时,那么就会给您分配到移动线路,所以不会卡,但由于这种网络带宽的费用十分高昂,所以无法实施到免费型中,因此免费型的网络是单条线路,移动网络访问就有可能会丢包卡顿,最好的解决方法就是购买付费节点,即使是9.9的最低价位服务器也都是BGP聚合线路。

诊断方法:
如果服务器中只有部分人卡顿,且通常是移动网络用户,那么很可能是网络问题。特别是在免费型节点中,卡顿现象更为常见。

优化策略:

  • 选择付费节点: 付费节点采用三网聚合BGP技术,能够根据用户网络自动选择最佳线路,减少卡顿。即使是最低价位的9.9元服务器,也能享受到BGP聚合线路的优势。

在处理服务器卡顿问题时,首先要排除的是简单的抱怨和错误的方法,如在群里喊卡,这是无济于事的。正确的做法是,通过上述诊断和优化策略,有针对性地解决问题,以确保服务器的稳定运行。

4.服务器过多实体或玩家过度跑图等引起的崩服导致

如果你服务器中的日志突然冒出一堆红色,且与下面的日志大致相同,那么,基本可以确定是由于玩家进服加载区块实体亦或者玩家过度跑图导致滞后行为导致的

[08:48:04] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[08:48:04] [Paper Watchdog Thread/ERROR]: ------------------------------
[08:48:04] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Leaves!):
[08:48:04] [Paper Watchdog Thread/ERROR]: Ticking entity: minecraft:wither_skull, entity class: net.minecraft.world.entity.projectile.EntityWitherSkull
[08:48:04] [Paper Watchdog Thread/ERROR]: Entity status: removed: false, valid: true, alive: true, is passenger: false
[08:48:04] [Paper Watchdog Thread/ERROR]: Entity UUID: ab6d4d05-52eb-45d3-8806-0382956ccb3e
[08:48:04] [Paper Watchdog Thread/ERROR]: Position: world: 'world_the_end' at location (100.33570621075278, 108.07564312070423, 178.4572969714849)
[08:48:04] [Paper Watchdog Thread/ERROR]: Velocity: (-0.0012465256817283164, 0.6236484112003824, 1.7880878278078873) (in blocks per tick)
[08:48:04] [Paper Watchdog Thread/ERROR]: Entity AABB: AABB[100.17820968507105, 108.6992915319046, 180.0891347992928] -> [100.49070968507105, 109.0117915319046, 180.4016347992928]
[08:48:04] [Paper Watchdog Thread/ERROR]: ------------------------------
[08:48:04] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[08:48:04] [Paper Watchdog Thread/ERROR]:     PID: 40 | Suspended: false | Native: false | State: RUNNABLE
[08:48:04] [Paper Watchdog Thread/ERROR]:     Stack:
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.Entity.canBeHitByProjectile(Entity.java:2296)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.Projectile.canHitEntity(Projectile.java:253)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.AbstractHurtingProjectile.canHitEntity(AbstractHurtingProjectile.java:144)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.EntityFireball$$Lambda/0x00007f94f694f320.test(Unknown Source)
[08:48:04] [Paper Watchdog Thread/ERROR]:         io.papermc.paper.world.ChunkEntitySlices$EntityCollectionBySection.getEntitiesWithEnderDragonParts(ChunkEntitySlices.java:497)
[08:48:04] [Paper Watchdog Thread/ERROR]:         io.papermc.paper.world.ChunkEntitySlices.getEntities(ChunkEntitySlices.java:260)
[08:48:04] [Paper Watchdog Thread/ERROR]:         io.papermc.paper.chunk.system.entity.EntityLookup.getEntities(EntityLookup.java:596)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.level.Level.getEntities(Level.java:1529)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.ProjectileUtil.getEntityHitResult(ProjectileUtil.java:109)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.ProjectileUtil.getHitResult(ProjectileUtil.java:54)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.ProjectileUtil.getHitResultOnMoveVector(ProjectileUtil.java:35)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.entity.projectile.AbstractHurtingProjectile.tick(AbstractHurtingProjectile.java:98)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.level.ServerLevel.tickNonPassenger(ServerLevel.java:1412)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.level.ServerLevel.lambda$tick$8(ServerLevel.java:909)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.level.WorldServer$$Lambda/0x00007f94f655e700.accept(Unknown Source)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.world.level.entity.EntityTickList.forEach(EntityTickList.java:42)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:886)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1708)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:451)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1519)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1226)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314)
[08:48:04] [Paper Watchdog Thread/ERROR]:         net.minecraft.server.MinecraftServer$$Lambda/0x00007f94f4b9f430.run(Unknown Source)
[08:48:04] [Paper Watchdog Thread/ERROR]:         java.base@21.0.3/java.lang.Thread.runWith(Thread.java:1596)
[08:48:04] [Paper Watchdog Thread/ERROR]:         java.base@21.0.3/java.lang.Thread.run(Thread.java:1583)
[08:48:04] [Paper Watchdog Thread/ERROR]: ------------------------------
[08:48:04] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO LEAVES - THIS IS NOT A BUG OR A CRASH ---
[08:48:04] [Paper Watchdog Thread/ERROR]: ------------------------------

针对这种情况,有以下几种解决方案

  • 升级服务器(最好是升级单核)
  • 使用清除实体(最好是已经知道了卡顿是有什么实体造成)指令
  • 删掉卡顿实体的区块
  • 使用屏蔽插件屏蔽日志(治标不治本)
  • 使用优化插件如lagfixer亦或者其他插件/mod
  • 这种情况一般也有内存溢出导致,所以使用回收内存的插件/mod/优化参数是最优解
切记不要一时冲动删掉服务器存档或者顺藤摸瓜找到存档实体文件并删除!这是只有真的不想要服务器的人才会做的事,存档文件能不改就不改,涉及的内容十分复杂,修复也是难如登天!
作者:海绵联机  创建时间:2024-11-28 19:04
最后编辑:tangbao  更新时间:2025-01-01 09:00