DC的杂谈 · 2020年1月25日 2

【杂谈】关于群游戏服务器的二三事

本来想认真写点东西的,但一时间没形成思路,所以先写点乱七八糟的东西吧。为了让行文轻松一点,全篇第一人称只用“我”而不是“在下”以表诚意。

去年年底我们群(虽然目前是我出钱)租了一台阿里云的学生机尝试着搭建Minecraft的私服——更准确的说租用的是9.5元一个月的轻量应用服务器,1C2G加40G硬盘5M带宽每月1T流量,最初只租了一个月来测试能不能带的起我们群一起玩MC,后来发现通过调参能够流畅带动至少5人一同MC游戏的时候就一次性又续费了1年(学生机一次允许续费的最长时间)。

正式“开服”的前一晚我拉着一位有闲的老哥全部用默认配置参数试着开了一下,游玩过程还算流畅,所以第二天我没改配置重新开个了图就让群里的老哥都进来玩了。之后的半个月游玩都算流畅,除了偶尔会有lag——顺便一提我们的服务器版本是1.14.4,中文论坛里貌似又不少吐槽1.14.x的服务器很卡的帖子了,当然这也是我后来才知道的。

直到建筑规模达到一定程度,终于有一天第一次出现有人被卡掉线的情况。这位老哥反复尝试都无法正常进入服务器后在群里@了我,我马上进后台查看系统占用,发现哪怕服务器里只有一人的情况下CPU占用都始终是100%。我踢掉在线的老哥,重启了服务器,但没有明显改善,进群询问后发现不少人都在建设大规模的刷鸡、刷兔子机器,于是让老哥们上线整改,动物养殖不能过密(考虑到计算碰撞体积的运算量),大规模的红石电路也要修改或者拆除。总之拆除“违建”之后服务器lag显著减少,但距离我认为“流畅”依然有差距。

考虑到这张地图以后还会玩 (较长)一段时间,地图必然会继续扩张,所以光是限制违建确保服务器流畅是不显示的,所以我开始动修改配置参数的脑筋。看了一圈(并趁没人的时候自己试了一下)发现最有效的是降低view-distance的值(这个值也是以玩家为中心加载区块的半径),我从默认的10先降到6,CPU占用显著降低但视距过近给我的体验很不好,所以目前我用的视距是8,能够看到较远的地方且即使多人在线CPU占用也稳定在50%左右,lag显著减少,虽然由于1.14的“固有问题”造成的卡顿依旧存在,这只能靠以后往上roll版本解决了:-)。

我使用的启动脚本非常朴素,仅仅指定了-Xms768m和-Xmx1536m,一些服主推荐的-XX:+AggressiveOpts我并没有使用,因为我读到的一些关于JVM调优的文章指出这个参数对运行效率的提升并不明显。另外2G的内存对于不到10人的服务器真的绰绰有余,反而带宽&流量更应该重视。5M的带宽我也说不清够不够用(姑且就当它够吧——对10人以下而言),但中高强度游玩不到一个月跑了近100G流量很令我意外。我本以为这种游戏不会产生很多流量的,但实际上3人左右在线时会产生70-200KB/s左右的持续流量,注意“持续”二字,一旦累积起来数量还是可观的,不过学生机每月1T的配额还是够的。

紧接着关于这台服务器的计划有二:先是学着给MC服务器打几个MOD提高可玩性(我觉得玩腻了就重开一张图是很低级的解决方法);然后就是安装配置Battlefield2的服务器了。总的来说在一台公网VPS上建立私服能够带来的乐趣远大于局域网联机,且体验远好于使用VPN/联机平台进行远程的联机游戏。反正钱都交了,不如轮流开几个游戏的私服让身处异地的老哥们平时多点联系感情的机会。

题外话:回家后给表妹展示了下我们的MC服,不经感叹(一般)大学生比(一般)高中生的运作能力还是强太多了,不仅在于技术能力(或者说这不是重点),更在于大学生(及以上)的社会角色能轻松做到远比高中生更多的事情。简单如租用服务器,没有银行卡/外币卡的高高中生很难租到廉价的服务器自己搭建服务器,他们就只能去用支付宝/微信购买网易的垃圾服务器/…;此外大学生用来运营课外活动的时间和精力也多余高中及之前学段的学生。这些我也经历过,高中那会儿买树莓派&配件之类的都是拿现金请有网银的同学代购,一来一回起码半个月才能收到东西;时间少英语水平又烂,想搞点啥只能回去看不知道从哪来的狗X中文“教程”;至于公网访问,做梦吧您,有空找个免费的花生壳/ngrok配置好就谢天谢地了,能租服务器的都是同龄人中的托尼史塔克了。总的来说读大学不会白读,起码能玩的东西比高中还是高几个level的。