• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

讨论 对于基岩版服务器游玩时卡顿的原因猜测

doupoa

【Lv:4】

新闻组
注册
2020/04/18
消息
77
金粒
12,117金粒
1.问题发现
最近我服在运行时有许多玩家都在反馈服务器非常卡,亲自上线后发现问题确实如此。

2.服务器基本情况
  • 服务端是在一个佬朋友的服务器上托管,性能方面为64h128g,网络有两条线路,甚至还为校园内的大学生玩家提供了一条校园网专线。按理来说应该不是性能及网络影响的。
  • 服务器是一个以高铁为特色的多城市纯生存服。城市之间跨度较大,最远一玩家xz轴约30000处
  • 可视区块为14

3.问题解析
一开始我们以为是存档过大的问题,因为曾听说佬朋友服务器存档已达到5个G的大小。但后来经存档备份后发现存档是嵌套的,实际大小只有1.5G。

随后,我们注意到了服务器“城市之间跨度较大”的问题。当两个及以上的玩家在服务器内不同城市内游玩时,卡顿情况就会发生。当多个玩家在同一城市或同一地区游玩时,卡顿情况几乎没有。因此我们就感觉问题应该是发生在服务器对存档读取时的问题上。

我们都知道,基岩版世界所用的存档格式为 *.db ,其数据库则为谷歌leveldb的魔改版,使用Zlib压缩格式来储存资料(Github)。当然压缩并不会提升读写的性能,这是写后再做的事情。

我们找到了一本关于leveldb的使用手册,在手册的开头,就非常明了讲明这是一个怎么样的数据库。

1632037696856.webp


写性能足够强悍,但读性能较为拉垮。

看看麻将这边魔改的leveldb性能。

数据模型
1632037911442.webp
*每个条目都有16byte的键与100byte的值

读性能
1632039384469.webp

第一条结果时在数据写入数据库后立即进行正向和反向顺序读取时的速率,其中,所写入的数据并未进行压缩。
第二条结果为数据库读写压缩后的数据(每秒大约 85,000 次读取)
第三条结果为,当提供足够大的内存时,压缩前后对比。压缩前每秒大约 100,000 次读取,速率为约为9.775微秒/次操作。压缩后每秒大约 190,000 次读取,速率为5.215微妙/次操作

经过mojang的魔改,当leveldb想要读取数据时,需要先要把压缩的数据解压再读取。


4.猜测
目前因技术力不足等原因暂时无法对游戏存档进行读写测试以获取充足的测试数据。但我们大概能猜测服务器卡顿的原因。主要如下
  • 存档过大,数据过多。其中存在因玩家跑图所产生的无用区块。
  • 存档所使用的leveldb数据库读性能较差
5.后续
服务器的卡顿已经不能正常的游戏了。经过多次的讨论我们最终决定,在1.18正式版发布前收拾未完成的项目,不再开新项目。待1.18正式版发布即开新档,旧存档归档。所有玩家需群居,不得做隐士。
在未来若有相关优化计划或我们自己去研发相关的优化方案将考虑重新上线该存档。
 
  • 喜欢
反馈: WAT
好久没见过技术贴了,我也来补充一些东西吧
1 BDS的多线程优化并不好,大多数游戏事件在一个线程上,一些比较复杂的小东西例如待发送数据包,数据表压缩等基本上是在单线程上。
2 LevelDB的读取性能对于基岩版的platte storage影响不大,数据是整个区块的形式存储读取,只有在完全没有玩家是会被卸载并在一段时间后写入硬盘,对于大部分的修改操作实际上是在内存中完成的
3 看你的描述我注意到你的核心数很多,应该是Intel的志强系列处理器,大部分的志强并不适合开BDS服务器,他们多注重多线大并发能力,单核实力不足(针对第一点写到的多线程优化不佳)
 
好久没见过技术贴了,我也来补充一些东西吧
1 BDS的多线程优化并不好,大多数游戏事件在一个线程上,一些比较复杂的小东西例如待发送数据包,数据表压缩等基本上是在单线程上。
2 LevelDB的读取性能对于基岩版的platte storage影响不大,数据是整个区块的形式存储读取,只有在完全没有玩家是会被卸载并在一段时间后写入硬盘,对于大部分的修改操作实际上是在内存中完成的
3 看你的描述我注意到你的核心数很多,应该是Intel的志强系列处理器,大部分的志强并不适合开BDS服务器,他们多注重多线大并发能力,单核实力不足(针对第一点写到的多线程优化不佳)
草死我才注意到这个帖子那么久了
 
好久没见过技术贴了,我也来补充一些东西吧
1 BDS的多线程优化并不好,大多数游戏事件在一个线程上,一些比较复杂的小东西例如待发送数据包,数据表压缩等基本上是在单线程上。
2 LevelDB的读取性能对于基岩版的platte storage影响不大,数据是整个区块的形式存储读取,只有在完全没有玩家是会被卸载并在一段时间后写入硬盘,对于大部分的修改操作实际上是在内存中完成的
3 看你的描述我注意到你的核心数很多,应该是Intel的志强系列处理器,大部分的志强并不适合开BDS服务器,他们多注重多线大并发能力,单核实力不足(针对第一点写到的多线程优化不佳)
想问一下,什么U适合开bds服务器,我的机子是小主机,用的是笔记本的主板,所以U只能装笔记本的U
 
想问一下,什么U适合开bds服务器,我的机子是小主机,用的是笔记本的主板,所以U只能装笔记本的U
大多数消费级的cpu的单核性能会比服务器用的单核来的高,,
笔记本这种降压u不推荐,性能还是差
 
很有帮助
 
想问一下,什么U适合开bds服务器,我的机子是小主机,用的是笔记本的主板,所以U只能装笔记本的U
酷睿
高频e5
 
最近我服务器也出现过类似的问题,本人机器采用 vps 5950x 8h16g,17mbps的上传,服务器玩家人数大于5个就会非常卡顿,吃一块猪排要5秒,并且回弹非常严重。基岩版服务器卡顿其实也有几个常见的原因,一般用减法就能测出来
①起初我认为是带宽问题,但是实际占用上传仅有2mbps峰值3mbps,我用比较常用的网络测速网站进行测试,显示上传带宽为17mbps,然后我观察玩家进出服务器的时候任务管理器现实的上传带峰值,最高也就2.几,因此我粗略排除带宽问题
②再就是插件问题,我服务器是一个生存服务器,插件问题也是非常有可能引起卡顿的,我服务器用的是我自己做的一个整合包,优化确实有问题,我也在尽力寻找能优化的地方,奈何我技术有限,这个是插件列表https://www.minebbs.com/resources/1-19-51-1-20-0-01.5287/
A加载器 B防java成就 C热备份 Dtr E坐标记录 F排行榜 G菜单 H日志 I灵魂出窍 G部分玩家睡觉跳过夜晚 H模拟玩家
我尝试先关闭排行榜,模拟玩家,日志等插件


连载中******
更新中
 

在线管理成员

  • Taoisa
    不分好歹的善 不是善 是恶的帮凶

在线会员

  • 就叫谷姐吧
  • blackDDC
  • Taoisa
  • zxxxxxxx
  • Toten
  • 透风的窗帘
  • Mcixix
  • BAsaltWSXuan
  • 尘帝阁空岛
  • MRevenger
  • isuo
  • 最终旅行服务器
  • 楠牧
  • HN_888
  • L导爱你
  • 爱鹿关的黑酒一个温馨的rpg服务器
  • GF
  • engsr6982
  • 玉米棒
  • EnTIv
...和 41 更多。
后退
顶部 底部