Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 4754|回复: 89

[优化] 服务器配置文件优化 —— 让测试数据来说话吧!TPS最高提升100% (CPS)

  [复制链接]
EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
发表于 2020-7-20 16:08:59 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 EmptyLava 于 2020-8-23 16:57 编辑

服务器配置文件优化
- 前言 -

- 这篇教程的意义?
- 目前站内的100%关于配置文件的优化教程,大多都是凭借前人经验与个人感觉,而实际的优化效果可能欠佳,不但优化效果差,还会严重影响玩家体验。而本篇教程就是为了在配置文件中找出最有效的配置项,以及最佳优化效果时的数值,并结合形成整个配置文件。

- 你的测试数据怎么让我们信服?
- 我们每次测试都会记录下测试数据,然后公布在腾讯文档(以后可能会发布在pastebin上),每一次测试都可以寻找到spark链接和当时的TPS/Chunks/Entities/Tiles,不可能出现造假的情况,同时我们会尽量减小测试的误差。

- 测试平台是?
- Windows Server 2016 / Intel Xeon E5 2689 2 Cores / 6GB
  服务器进程的内存分配为4000M
  启动参数为 java -jar -Xmx4000M -Xms4000M server-1618.jar
  服务器版本在测试时会有说明,大部分为1.12/1.13,也有1.13/1.14内容 服务器种子为114514(防止地图建筑等对 测试的影响)
  其他参数如未说明,均为默认参数
  数据采样使用Spark,仅一次使用Timings[1]

- 为什么不用Timings?你是不是歧视它不好用?
- 对,就是不好用
  ①由于核心为Paper,Timings的数据收集至少需要3分钟,这给测试带来了许多不便
  ②Timings在对照条件下根本就没!法!用!随随便便生成的Timings报告都有400%的tick,肯定是不符实际的,我怎么知道它是正确的还是错误的呢
  当然,极少数情况我们也可能会选择Timings

- 我服务器是1.7.10/1.13+的,看你的这篇教程有用吗?
- 对于1.7.10,您可以大胆参考,不需要有任何担心
- 对于1.13+,测试内的Chunks[2]/Entities[3]/Tiles[4]是不会变的,变的只是TPS和优化效果,而优化效果看的是被测事物本身,比如我要测服务器内100区块和200区块的占用情况如何,优化效果的多少在1.12和1.13+是接近的,即使单个区块的占用变了,优化效果也不会变化多少。并且我们也对1.13+的内容进行了测试,让数据更加准确。

- 其他
- 在鸽(zuo)了在鸽(zuo)了,具体进度请查看腾讯文档,本教程比腾讯文档晚更新
- 结论的表格中的“综合提升”有一定参考价值,在实际生产环境中的提升效果会有一定折扣(除非服务器没有插件占用),‘针对提升’是针对某些单一方面的(看针对提升的效果时,请注意这个配置项测的是什么),同时针对提升一般反映的是这项配置的最大优化能力,请勿把针对提升当做此配置的真实优化水平!
- 由于某些原因,我不可能会去多次测试取平均值,所以测试结果会有一定误差(但是误差会在可接受范围内)
- 这种字体一般是对前文的解释或者提醒,它一般在表格外
   [1]这种跳转链接也是对前文的解释,但它一般是在表格中。因为过长的注释会影响表格的美观
   [1.13+]指1.13及更高版本;[1.13-]指1.13及更低版本


- 目前进度
- 字数: 94316字节 11640汉字
- 最近一次更新:
        进行了14次测试(14次有效),完成3个配置项的优化效果测试

   
点击最上方目录选择内容


评分

参与人数 11人气 +24 金粒 +85 收起 理由
Bad_Guy + 2 非常感谢,有理有据!
3152426083 + 1 神乎其技!6的飞起!
wdx123456 + 1 6
骚马克 + 2 + 15 顶啊!大佬
997793988 + 2 + 30 MCBBS有你更精彩~
wjwrh + 4 + 40 MCBBS有你更精彩~
HotPe_e + 2 MCBBS有你更精彩~
结城希亚 + 2 我也想开坑
Light. + 2 Ssssssssssssssssssss
极光creeper + 3 这是ao的
。—。 + 3 插眼

查看全部评分

EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
 楼主| 发表于 2020-7-21 10:16:40 | 显示全部楼层
本帖最后由 EmptyLava 于 2020-8-23 16:57 编辑


更新日志:
7-20:发布帖子,共进行9次测试(6次有效,1次无效,2次待定,有多次数据错误/上传失败的没有记录),完成1个配置项的优化效果测试
7-21:进行10次测试(5次有效,5次无效),完成1个配置项的优化效果测试
7-22:进行5次测试(5次有效,十余次无效结果未计入),完成1个配置项的优化效果测试
7-23:进行12次测试(12次有效),完成2个配置项的优化效果测试
7-24:进行6次测试(6次有效),完成1个配置项的优化效果测试
7-25:进行10次测试(5次有效.5次无效),完成1个配置项的优化效果测试
7-26:进行6次测试(6次有效),完成1个配置项的优化效果测试
7-27:进行5次测试(3次有效,2次无效),完成1个配置项的优化效果测试(本来要放鸽子的,可是还是没鸽,加班到晚上八点才肝完)
7-28:进行8次测试(8次有效),完成1个配置项的优化效果测试
7-29:进行10次测试(10次有效),完成1个配置项的优化效果测试
7-30:进行4次测试(4次有效),完成1个配置项的优化效果测试
7-31:进行8次测试(8次有效),完成1个配置项的优化效果测试
8-1:进行4次测试(4次有效),完成1个配置项的优化效果测试
8-2:进行4次测试(4次有效),完成1个配置项的优化效果测试
8-3:进行4次测试(4次有效),完成1个配置项的优化效果测试
8-4:进行7次测试(7次有效),完成1个配置项的优化效果测试
8-5:更新了总结部分,同时为1.13/1.14/1.15/1.16测试做准备
8-6:更新了总结部分,同时为1.13/1.14/1.15/1.16测试做准备
8-7:进行了4次测试(4次有效),完成1个配置项的优化效果测试。并将1.13与1.14内容更新完毕,配置文件描述衔接到了1.16
8-8:进行了9次测试(9次有效),完成2个配置项的优化效果测试。
8-9:进行了6次测试(6次有效),完成1个配置项的优化效果测试。
8-10:进行了11次测试(11次有效),完成2个配置项的优化效果测试。同时1.12内容全部完成
8-11:进行了7次测试(5次有效,2次无效),完成2个配置项的优化效果测试。1.15/1.16内容全部完成
8-18:添加了总结部分对于玩家事件/数据包传输这两个占用较大的项目的提醒
8-23:进行了14次测试(14次有效),完成3个配置项的优化效果测试。除非更新1.17,将不会再进行测试
↑主体更新

↓辅助性更新
8-12:
①总结中的配置文件添加了对Arclight(1.14/1.15)的支持
②现在的Catserver/Mohist配置文件中都基于自身的bukkit.yml/spigot.yml了,而不是再使用Paper提供的(Catserver,Mohist都针对MOD服删减了配置文件内的一些配置项,直接使用Paper的文件不会造成什么后果,但是会让服主以为这个配置项可用。实际上它不会生效)
8-13:
现在的1.15/1.16插件服配置文件中都基于自身版本的bukkit.yml/spigot.yml/paper.yml了(以前是使用上一个版本升级上来的)。修正了配置文件内的一部分内容,提升了一定的优化效果且玩家体验还能上升
②增加了几个因不同版本导致的差异性内容
8-14:
①现在的1.13/1.14插件服配置文件中都基于自身版本的bukkit.yml/spigot.yml/paper.yml了(以前是使用上一个版本升级上来的)。修正了配置文件内的一部分内容,提升了一定的优化效果且玩家体验还能上升
②增加了1个因不同版本导致的差异性内容
8-16:优化排版






回复

使用道具 举报

蕾米洛伊 当前离线
积分
1345
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-6-10
查看详细资料
发表于 2020-7-20 16:22:23 | 显示全部楼层
插个嘴,可以把标题改的明白一点比如MC服务端配置文件优化,一开始以为是插件开发读写配置文件的优化懵了半天(((另外腾讯文档好像不登陆看不了

评分

参与人数 2人气 +3 金粒 +18 收起 理由
结城希亚 + 1 读写还要优化吗,就拿几条
EmptyLava + 2 + 18 MCBBS有你更精彩~

查看全部评分

回复

使用道具 举报

Light. 当前离线
积分
2385
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-4-8
查看详细资料
头像被屏蔽
发表于 2020-7-20 16:31:21 | 显示全部楼层
插眼(指收藏),话说我服务器种子就是114514?!

评分

参与人数 1人气 +1 收起 理由
EmptyLava + 1

查看全部评分

回复

使用道具 举报

EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
 楼主| 发表于 2020-7-20 16:51:40 | 显示全部楼层
蕾米洛伊 发表于 2020-7-20 16:22
插个嘴,可以把标题改的明白一点比如MC服务端配置文件优化,一开始以为是插件开发读写配置文件的优化懵了半 ...

ok已修改
后续可能会用pastbin或者其他平台来代替腾讯文档
回复

使用道具 举报

华小鸽 当前离线
积分
73
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-14
查看详细资料
发表于 2020-7-20 17:22:23 | 显示全部楼层
114514还行 草
回复

使用道具 举报

神崎长闲 当前离线
积分
5048
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-4-3
查看详细资料
发表于 2020-7-20 17:29:34 | 显示全部楼层
114514

私货警告

这是大佬要开新坑了吗
回复

使用道具 举报

wjwrh 当前离线
积分
25066
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2013-7-29
查看详细资料
发表于 2020-7-20 17:29:46 | 显示全部楼层
Windows Server 2016 / Intel Xeon E5 2689 2 Cores / 6GB
这个配置看起来很眼熟呢

评分

参与人数 1金粒 +5 收起 理由
EmptyLava + 5 草草草

查看全部评分

回复

使用道具 举报

极光creeper 当前离线
积分
8125
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
发表于 2020-7-20 17:41:36 | 显示全部楼层
本帖最后由 极光creeper 于 2020-7-20 17:43 编辑

原来如此,挺好的
最近在练习打字,可以不管我的,只是一点小小的建议,希望能采纳/探讨一下

比如你们一上来就选择了最难的一个View-distance

    我们粗略地把生产环节里的地图分为Generation和Loading以及Lighting三个部分

    "Generation",它在1.13前和1.13后的逻辑是不一样的,虽然Generation还要再作区分,但是我就这么一概而论吧
    此外,在世界生成过程中,1.15后一般使用2个线程,而之前的表现更差

    "Loading",对于内存而言,1.14及以后不再只加载视野中的"view distance"区块(请允许我使用这样野鸡的说法),
    它还会加载内存中的区块,以及区块的加载策略也有了非常大的改动,它不是单纯的一股脑,数据全塞到内存里

    "Lighting",同样的,由于光照引擎的修改,Lighting也要区分1.14前和1.14后,mj其实是在优化多线程的(笑

    网络因素(波动),延迟峰值 也是有必要考虑到的


    所以说起来如果要测试,你必须在至少4个情景下测试
    · 1.13以前
    · 1.13
    · 1.14
    · 1.15及以后
    · 指不准哪天还要测试更多,单单测试一个,实在是太不具有普适性了
      我相信这就是大家很少写这种基于测试的教程的原因,它就是超绝麻烦

    这些是必须要注意的,所以我推荐超大号红字写清楚这个问题,否则还是挺麻烦的
    以及在不同的核心线程数量下,地图生成,光线引擎等等 它们的情况也是不一样的

    同样,GC也是一个非常大的问题,众所周知,大家可以轻松地使用16GB在1.8带300个玩家
    但对于1.15,在逻辑上就拒绝了那么多玩家 (它强推了分布式架构),对于GC Root大小的要求也是更进一步的

    这样独立出来的测试并不是一个非常好的做法
    对于你的较少内存(你测试中只给了1536M),它可以大量利用cpu进行一个回收
    而测试中禁用回收则完全不是在模仿生产环节,它的目标是生产环节
    最初,你可以在禁用区块回收的情况下进行测试,但是这个数据最好放在最后公示,因为它可能不太适合作为最终结论

    我想,这就是其他教程给人模棱两可的感觉的原因了,毕竟在生产环节上服务器还会崩溃呢(笑



评分

参与人数 1人气 +3 金粒 +30 收起 理由
EmptyLava + 3 + 30 神乎其技!6的飞起!

查看全部评分

回复

使用道具 举报

EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
 楼主| 发表于 2020-7-20 18:04:27 | 显示全部楼层
本帖最后由 EmptyLava 于 2020-7-20 18:06 编辑
极光creeper 发表于 2020-7-20 17:41
原来如此,挺好的
最近在练习打字,可以不管我的,只是一点小小的建议,希望能采纳/探讨一下
你的想法很有建设性,在接下来我也会参考的(

在实际设置参数的时候也考虑到了很多
我也想到了1.12 1.13 1.13+的区块机制变化,但是由于个人屑电脑的缘故可能不会测试到1.14,1.13的区块改了很多,对于1.13或更高版本也有一定的说服力

网络问题也想到了,如果网速过低会导致区块还没被加载/生成就要被卸载了

内存的话后面分了5G,对于1个人,chunks不超过2k的情况下富足了
而测试中禁用回收则完全不是在模仿生产环节,它的目标是生产环节

其实我是想尽量还原生产环境的,在设置参数的时候我可能更多考虑到了多玩家的时候(10个分开的玩家不就相当于一个玩家跑图10*[view-distance*16]的距离,而且没有进行区块回收吗(  )

评分

参与人数 1人气 +2 收起 理由
极光creeper + 2 辛苦辛苦

查看全部评分

回复

使用道具 举报

EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
 楼主| 发表于 2020-7-20 18:22:35 | 显示全部楼层
本帖最后由 EmptyLava 于 2020-7-20 18:24 编辑
极光creeper 发表于 2020-7-20 17:41
原来如此,挺好的
最近在练习打字,可以不管我的,只是一点小小的建议,希望能采纳/探讨一下

还想和您探讨一下 计算配置文件提升效果的时候 基准应该选哪个

只有一个spark的采样数据

我就只想到两种
1.(Thread.sleep优化前占比%-Thread.sleep优化后占比%)/(1-Thread.sleep优化前占比)=优化效果
2.(Thread.sleep优化前占比%-Thread.sleep优化后占比%/(1-Thread.sleep[0tile,0entity,出生点加载区块数]的占比%=优化效果

但是好像都不是很好,看一下您能不能出点招
不能接受加权等算法,这样的优化效果就没什么意义了
回复

使用道具 举报

阴阳师元素祭祀 当前离线
积分
24257
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2013-12-14
查看详细资料
发表于 2020-7-20 18:34:06 | 显示全部楼层
EmptyLava 发表于 2020-7-20 18:22
还想和您探讨一下 计算配置文件提升效果的时候 基准应该选哪个

只有一个spark的采样数据

后排小声吐槽
为什么要看sleep来作为优化效果对比(?)也许可以更加全面一点(?)
而且sleep我觉得不稳定 大概

也许可以具体到某个方法调用次数/[平均/峰值]耗时
还可以看看多核利用率是多少? QQ图片20200709123921.png

像这样看看每个线程IO cpu情况
如果可以 使用jdk或者其他工具记录内存/CPU/GC/IO情况

毕竟核心数量不同 ↑可能会有所不同X

比如我这块上古80G硬盘的电脑 玩mc可能是卡在IO上


评分

参与人数 2人气 +4 金粒 +44 收起 理由
极光creeper + 2 + 20 Ssssssssssssssssssss
EmptyLava + 2 + 24 MCBBS有你更精彩~

查看全部评分

回复

使用道具 举报

EmptyLava 当前离线
积分
12408
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-9-7
查看详细资料
 楼主| 发表于 2020-7-20 18:40:02 | 显示全部楼层
本帖最后由 EmptyLava 于 2020-7-20 18:41 编辑
阴阳师元素祭祀 发表于 2020-7-20 18:34
后排小声吐槽
为什么要看sleep来作为优化效果对比(?)也许可以更加全面一点(?)
而且sleep我觉得不稳定  ...


就论view-distance吧
还会影响entity tile等,算方法调用时间的话好像挺麻烦的

方法调用耗时这个想法挺好的呀,spark上也有

cpu利用率的话纯粹一乐..误差太大
  1. 以上都没有[s],只是被之前的代码套了
复制代码

回复

使用道具 举报

阴阳师元素祭祀 当前离线
积分
24257
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2013-12-14
查看详细资料
发表于 2020-7-20 18:41:44 | 显示全部楼层
本帖最后由 阴阳师元素祭祀 于 2020-7-20 18:44 编辑
EmptyLava 发表于 2020-7-20 18:40

就论view-distance吧
还会影响entity tile等,算方法调用时间的话好像挺麻烦的

方法耗时不需要具体到每个细节 大块大概就好了(?)
可以看出来 view-distance影响的大块是哪个地方

然后..
cpu利用率可以看每个线程
主要是看多线程优化怎么样(bushi



↓我记得我看timings的时候 还有chunk相关的

评分

参与人数 1金粒 +5 收起 理由
EmptyLava + 5 记录了tickentities和dotick

查看全部评分

回复

使用道具 举报

结城希亚 当前离线
积分
14748
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2017-8-26
查看详细资料
发表于 2020-7-20 19:06:25 | 显示全部楼层
等个能拯救大型次元的配置
指暮色跑图、交错次元跑图,实测即使预载了,跑得快还是...

评分

参与人数 1人气 +1 收起 理由
极光creeper + 1 等分布式来救命吧

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-10-29 04:55 , Processed in 0.095924 second(s), Total 31, Slave 30 queries, Release: Build.2020.10.27 1523, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表