Minecraft的疑難雜癥#9-Watching Server/服務(wù)器卡頓滯后過久使Watchdog自動關(guān)閉服務(wù)器
感謝在粉絲群里分享的這篇崩潰日志和服務(wù)器日志w,我就拿來用啦。別問我為什么突然復(fù)活,只是在放寒假(
這個崩潰應(yīng)該是在1.14加入一個Server?Watchdog(服務(wù)器看門狗)引起的,這是一個線程,當(dāng)有滯后(Lag)過久時它就會自動結(jié)束服務(wù)器進程。
由于這個崩潰是因為服務(wù)器滯后/卡頓造成的,因此具有一定的隨機性,這取決于你的服務(wù)器在什么時候出現(xiàn)了滯后以及滯后的程度。

(一)崩潰日志
---- Minecraft Crash Report ----
Description: Watching Server
java.lang.Error: Watchdog
at java.base@17.0.2/java.lang.ClassLoader.defineClass1(Native Method)
at java.base@17.0.2/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base@17.0.2/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base@17.0.2/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base@17.0.2/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base@17.0.2/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base@17.0.2/java.security.AccessController.executePrivileged(AccessController.java:807)
at java.base@17.0.2/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base@17.0.2/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at java.base@17.0.2/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at java.base@17.0.2/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at sh.a(SourceFile:26)
at ahn.b(SourceFile:1372)
at akr.a(SourceFile:801)
at akr.a(SourceFile:793)
at aif.a(SourceFile:1232)
at sb.m(SourceFile:425)
at aie.c(SourceFile:196)
at net.minecraft.server.MinecraftServer.b(SourceFile:897)
at agn.b(SourceFile:283)
at net.minecraft.server.MinecraftServer.a(SourceFile:830)
at net.minecraft.server.MinecraftServer.w(SourceFile:676)
at net.minecraft.server.MinecraftServer.a(SourceFile:264)
at net.minecraft.server.MinecraftServer$$Lambda$4384/0x000000080149ef90.run(Unknown Source)
at java.base@17.0.2/java.lang.Thread.run(Thread.java:833)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Thread: Server Watchdog
Stacktrace:
at java.base@17.0.2/java.lang.ClassLoader.defineClass1(Native Method)
at java.base@17.0.2/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
-- Thread Dump --
Details:
Threads: "Reference Handler" daemon prio=10 Id=2 RUNNABLE
at java.base@17.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
at java.base@17.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:253)
at java.base@17.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:215)
[省略...]
[省略守護進程?...]
[省略...]
[省略Stacktrace...]
-- [省略Performance stats...]?--
-- System Details --
Details:
Minecraft Version: 1.19.3
Minecraft Version ID: 1.19.3
Operating System: Windows 10 (amd64) version 10.0
[省略...]
Memory: 573078016 bytes (546 MiB) / 1649410048 bytes (1573 MiB) up to 2147483648 bytes (2048 MiB)
[省略...]
Is Modded: Probably not. Server jar signature and brand is untouched
Type: Dedicated Server (map_server.txt)
(二)Logs文件夾下的日志/服務(wù)器日志,注意加粗字
[之前省略...]
[21:33:50] [Server thread/INFO]: *** joined the game
[21:34:08] [Server thread/INFO]: [Not Secure] <*> 阿偉你坐標(biāo)報一下
[21:35:08] [Server Watchdog/ERROR]: A single server tick took 60.00 seconds (should be max 0.05)
[21:39:55] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 346606ms or 6932 ticks behind
[21:39:55] [Server Watchdog/ERROR]: Considering it to be crashed, server will forcibly shutdown.(Watchdog認(rèn)為服務(wù)器已經(jīng)崩潰,將對其強制關(guān)閉。)
[21:39:59] [Server thread/INFO]: *** lost connection: Disconnected
[21:39:59] [Server thread/INFO]: *** left the game
[21:39:59] [Server thread/INFO]: ** lost connection: Disconnected
[21:39:59] [Server thread/INFO]: ** left the game
[21:39:59] [Server thread/INFO]: com.mojang.authlib.GameProfile@4ba487ed[id=<null>,name=***,properties={},legacy=false] (/***.***.**.**:*****) lost connection: Disconnected
[省略……]
[21:39:59] [Server thread/INFO]: com.mojang.authlib.GameProfile@2ec83d36[id=<null>,name=*,properties={},legacy=false] (/*) lost connection: Disconnected
[21:39:59] [Server Watchdog/ERROR]: This crash report has been saved to: J:\*\.\crash-reports\crash-2023-01-13_21.39.59-server.txt
以上兩篇日志均做了部分刪減和修改,以節(jié)省篇幅和保護隱私
解決方案:
1. 將Watchdog滯后自動關(guān)閉設(shè)置到更久一點或關(guān)閉它。
在服務(wù)器文件目錄下,你應(yīng)該能找到server.properties文件,用文本編輯器之類的軟件打開它,將里面的max-tick-time后面的數(shù)值修改成比60000還大的數(shù)字(滯后更久再關(guān)閉服務(wù)器,該數(shù)字以毫秒為單位,默認(rèn)滯后60秒自動關(guān)閉服務(wù)器)或者是-1(不檢測滯后,該選項在14w32a中添加)。
2. 自行提防服務(wù)器會引起卡頓的內(nèi)容并做好相關(guān)處理措施。
3. 提升你服務(wù)器的運行內(nèi)存。
相關(guān)鏈接:
[MC-63590] Watchdog shuts down server - Jira (https://bugs.mojang.com/browse/MC-63590)

最后再說:
雖然在之前的文章里面沒有有目的地請你們幫忙點個贊(雖然我也不怎么在乎贊嘎嘎嘎,能幫到就好),但是我發(fā)現(xiàn)如果贊少的話會影響文章的推廣,不怎么利于及時幫助其他有相似問題的玩家,所以還是希望如果這篇或其它文章對你有用的話,麻煩請你點個贊喵,謝謝辣w