自己开的服,1.20.1 Forge,装了大概 80 个模组。人少的时候(5 人以下)TPS 稳稳 20,一旦到 18 人以上就开始掉,20 人的时候只剩 12 左右,走路都在卡。

机器配置是 E5-2680v4 + 32G,给了服务端 12G 堆内存。已经试过这些:

  • 把视距从 10 降到 6,没有明显改善
  • 关掉所有实体密集的农场(刷怪塔、村民交易所),TPS 回到 15 左右,但还是不到 20
  • 换过 spark 采样,/spark profiler --timeout 60

spark 报告里最上面几行长这样,我看不太懂哪些是模组自己的开销:

tickEntity 占 41.2% · EntityTickList.forEach 占 33.8%
ServerLevel.tickChunk 占 18.4% · POIUpdate 占 6.2%

我想确认的两件事

第一,tickEntity 占这么高,是原版实体本身多,还是某个模组加的实体没做优化?我装了 Alex's Mobs 和 Ice and Fire,这两个都有大量自定义 AI。

第二,POIUpdate 这 6.2% 是不是村民相关的?如果是,把村民全部关进一个区块里集中处理会不会好一点?

报告原始链接放在下面了,需要的话我可以再跑一次更长时间的采样。