本帖最后由 Summer621621 于 2022-1-7 01:13 编辑
描述:
从大约log4j爆发之后开始,服务器就开始出现这个现象(已修复log4j),就是玩家加入或发消息的时候有较高概率使所有在线玩家客户端瞬卡并且服务器后台有概率报错。
但是此错误没有任何追踪信息,下面的错误报告是唯一(注意是唯一)的error输出,除此之外没有任何插件/配置等错误报告的追踪。
服务器使用的是5GHz高主频CPU,32GRAM,一次性复制上亿个方块都没有输出过红色error,错误发生时服务器的硬件使用率无变化,是正常的,因此排除硬件问题。
此问题难点在于,所有错误日志中找不到任何追踪文档,就好像这只是单纯的卡顿,甚至以下的这段我也觉得没啥卵用。
其他:我感觉这个症状和log4j在早期修复的服务器中很像:即无法被远程代码注入但可以导致玩家和服务器发生瞬卡。
如下是错误报告:
| [21:09:13 INFO]: UUID of player 隐藏 [21:09:23 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-407 (MC: 1.17.1) --- [21:09:23 ERROR]: The server has not responded for 10 seconds! Creating thread dump [21:09:23 ERROR]: ------------------------------ [21:09:23 ERROR]: Server thread dump (Look for plugins here before reporting to Paper!): [21:09:23 ERROR]: Ticking entity: minecraft:player, entity class: net.minecraft.server.level.EntityPlayer [21:09:23 ERROR]: Entity status: removed: false, valid: true, alive: true, is passenger: false [21:09:23 ERROR]: Entity UUID: 隐藏(就是玩家的uuid) [21:09:23 ERROR]: Position: world: 'main_world' at location (5982.62000452247, 72.64961430485657, 1974.4635408198415) [21:09:23 ERROR]: Velocity: (0.0, 0.0, 0.0) (in blocks per tick) [21:09:23 ERROR]: Entity AABB: AABB[5982.320004510549, 72.64961430485657, 1974.1635408079205] -> [5982.9200045343905, 74.44961425717285, 1974.7635408317624] [21:09:23 ERROR]: Total packets processed on the main thread for all players: 452792 [21:09:23 ERROR]: ------------------------------ [21:09:23 ERROR]: Current Thread: Server thread [21:09:23 ERROR]: PID: 37 | Suspended: false | Native: true | State: RUNNABLE [21:09:23 ERROR]: Stack: [21:09:23 ERROR]: [email protected]/java.net.Inet6AddressImpl.getHostByAddr(Native Method) [21:09:23 ERROR]: [email protected]/java.net.InetAddress$PlatformNameService.getHostByAddr(InetAddress.java:938) [21:09:23 ERROR]: [email protected]/java.net.InetAddress.getHostFromNameService(InetAddress.java:662) [21:09:23 ERROR]: [email protected]/java.net.InetAddress.getHostName(InetAddress.java:605) [21:09:23 ERROR]: [email protected]/java.net.InetAddress.getHostName(InetAddress.java:577) [21:09:23 ERROR]: [email protected]/java.net.InetSocketAddress$InetSocketAddressHolder.getHostName(InetSocketAddress.java:82) [21:09:23 ERROR]: [email protected]/java.net.InetSocketAddress.getHostName(InetSocketAddress.java:350) [21:09:23 ERROR]: SuperBan.jar//net.andylizi.superban.SuperBan.isBanned(SuperBan.java:202) [21:09:23 ERROR]: SuperBan.jar//net.andylizi.superban.SuperBan.onJoin(SuperBan.java:113) [21:09:23 ERROR]: com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor9.execute(Unknown Source) [21:09:23 ERROR]: app//org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) [21:09:23 ERROR]: app//org.bukkit.plugin.EventExecutor$$Lambda$5037/0x0000000801b38ac8.execute(Unknown Source) [21:09:23 ERROR]: app//co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) [21:09:23 ERROR]: app//org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) [21:09:23 ERROR]: app//org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) [21:09:23 ERROR]: app//net.minecraft.server.players.PlayerList.postChunkLoadJoin(PlayerList.java:360) [21:09:23 ERROR]: app//net.minecraft.server.players.PlayerList.lambda$placeNewPlayer$1(PlayerList.java:302) [21:09:23 ERROR]: app//net.minecraft.server.players.PlayerList$$Lambda$7339/0x000000080237edf8.run(Unknown Source) [21:09:23 ERROR]: app//net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:307) [21:09:23 ERROR]: app//net.minecraft.network.Connection.tick(Connection.java:555) [21:09:23 ERROR]: app//net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:201) [21:09:23 ERROR]: app//net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1656) [21:09:23 ERROR]: app//net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:490) [21:09:23 ERROR]: app//net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1483) [21:09:23 ERROR]: app//net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1282) [21:09:23 ERROR]: app//net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) [21:09:23 ERROR]: app//net.minecraft.server.MinecraftServer$$Lambda$3724/0x00000008013d2a98.run(Unknown Source) [21:09:23 ERROR]: [email protected]/java.lang.Thread.run(Thread.java:831) [21:09:23 ERROR]: ------------------------------ [21:09:23 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH --- [21:09:23 ERROR]: ------------------------------ [21:09:24 INFO]: Summer_QwQ joined the game [21:09:24 INFO]: Summer_QwQ[/隐藏] logged in with entity id 285495 at ([main_world]5982.62000452247, 72.64961430485657, 1974.4635408198415) [21:09:24 WARN]: Can't keep up! Is the server overloaded? Running 10991ms or 219 ticks behind |
补充:此问题被触发时服务器tps直线下降至高能从20降到16点几,这实在不像一个高性能服务器的tps
这个ERROR不是真正出了什么错,就是服务器卡了,只不过卡了太久,paper忍不住提醒你一下
好,那么这时候服务器在忙着干什么呢,来看线程堆栈的第一条java.net.Inet6AddressImpl.getHostByAddr,呃,好吧我看不懂,就是乍看上去跟访问网络有关,往下再看看,唯一能看到插件名字的就是superban,先删了试试吧
试过了删superban,甚至试过了删掉所有插件开白名单+安全模式进去,但是错误还是同样出现,就在加入和发消息的时候就有几率出现,然后error也不是一定会输出,有时候瞬卡很快恢复就不会输出error,卡很久就告诉你error
本帖最后由 Summer621621 于 2022-1-6 21:43 编辑
不知道到底是啥原因,我也在贴里说我也觉得这个error没啥卵用,,,唯一能确定的时间节点就是log4j爆发之后开始出现,然后症状真的非常像log4j在早期的修复方案中的表现,但其实我的服务器一直跟进官方修复方案,现在已经不是早期的会导致玩家瞬卡的了,从paper的构建版本407就能看出来
可能是 服务器核心有问题 你换个服务器核心试试
这个应该不太可能,因为我是在papermc.io官网下载的核心,然后,其实自从log4j爆发以来我也一直在换核心版本以保证服务器核心版本跟进最新官方版本
之前log4j CVE bug出现顺卡的原因是因为log4j在等待你输入那个ip回复有效的jnlp/jndi之类的信息,而大部分腐竹测试的时候都没输能提供服务的ip,因此会一直等回复直到超时,因此出现卡顿
如果log4j那个bug仅仅如此其实也就那样,但如果那个ip能提供有效服务,对方就可以在你的服务器上为所欲为,才需要紧急修复.
至于服务器卡顿,这个原因实在太多不好定位,建议:开个spark之类的性能监视器并反复触发卡顿,之后看看监视器里占用ms最高的那个进程是啥