跳转至

高级调试 - 卡死排查

当服务器出现卡顿、TPS 低、甚至卡死的情况时,可以用下面两种方法来定位问题。


方法一:Spark 性能分析(推荐,简单直观)

Spark 是一个 Minecraft 性能分析工具,能帮你找到是什么在拖慢服务器。

第一步:确认 Spark 已安装

Spark 一般已经内置在服务端里了。如果不确定,可以在控制台输入:

spark

如果有回显信息,说明已安装,直接下一步。

第二步:开始采样

在控制台输入以下命令,让 Spark 开始记录:

spark profiler start

第三步:复现卡顿

保持服务器运行,去做那些会导致卡顿的操作(比如进服跑图、触发某些机器等),让 Spark 记录下这段时间的性能数据。

采样时间建议 5~10 分钟,时间越长数据越准确。

第四步:停止采样并获取链接

在控制台输入:

spark profiler stop

停止后 Spark 会返回一个网址,类似:

https://spark.lucko.me/7twWCWSV0B

第五步:自动分析

复制上面那个网址,粘贴到下面的自动分析网站:

👉 https://as.started.ink/

网站会自动帮你分析出问题所在,告诉你哪些模组/插件在吃资源、哪里需要优化。


方法二:jstack 线程转储(备选方案)

如果 Spark 无法使用,可以用 jstack 来抓取线程快照。

第一步:下载服务端到本地

把服务器文件下载到你的电脑上。

第二步:在本地启动服务端

确保能在本地正常运行起来。

第三步:找到进程 PID

在服务端目录下打开 CMD(在文件夹地址栏输入 cmd 回车),执行:

jps -l

会显示类似这样的结果:

12345 minecraft_server.jar

记下前面那个数字(这里是 12345),这就是 PID。

第四步:复现卡死

打开客户端进服,重现卡死的情况。

第五步:导出线程快照

在 CMD 中执行(把 [PID] 替换成第三步记下的数字):

jstack [PID] > dump.txt

执行完后,服务端目录下会多出一个 dump.txt 文件,把这个文件发给技术人员分析即可。