高级调试 - 卡死排查
当服务器出现卡顿、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 文件,把这个文件发给技术人员分析即可。