游戏开发论坛

 找回密码
 立即注册
搜索
楼主: qinglan

服务器又宕机了,怎么办?

[复制链接]

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2008-8-1 22:07:00 | 显示全部楼层

Re: 服务器又宕机了,怎么办?

除了事后尽量降低玩家回档数据有意义之外,其他的都没什么意义

1

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2008-8-2 19:17:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

前几天刚刚跑完新游戏的一次封闭测试,最高时人数跑到了近1500,顺便也提提我的体验:

AutoSave设置为5分钟,数据库使用MySql,服务端使用线程作数据库操作(非进程)缓冲中间段,基本够用(数据库服务器压力感觉很小)

第一天基本上半小时一小时宕一次机,通宵修改IO性能,把多线程切换部分整体检查一次 (当时玩家就怒了 T_T)

第二天已经基本稳定。

第三天出现非法封包(有人开始尝试做外挂),已经马上有人找出可使用字符串内存溢出的方法,又开始宕机(汗颜啊,中国玩家太专业了……),马上封包加密,程序加壳…… 呼

第四天,开始有人研究加速方法,出现加速外挂(汗…… ) 赶紧换方法封。又出现玩家通过数据库注入拒绝漏洞导致数据库线程挂掉的方法…… 马上对所有传过来的字符串加检查…… (呼……)

第五天以后,基本不挂了。

之后一周,大约2、3天可能挂一次,原因与自身指针保护有关,后已经解决。

感想:

1) 对于封测阶段来说,AutoSave太重要了…… 不可能有游戏敢100%保证到中国来运营不挂,本土游戏同样
2) 使用这样的恢复策略只能说是一种出事后的恢复,其实更重要是要想办法尽快解决已经出现的问题。这就要求程序员有非常强的分析Dump文件并且找出原因的能力。

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2008-8-3 02:50:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

先来说说楼主的文章的问题:
除了建议加大存盘频率尽量降低损失之外,其他根本没有实用价值,都是楼主在YY,我想楼主自己都没有办法应用在实际项目中。所以应该也没有办法应用在实际项目中并取得良好的效果。


双机冗余机制?是的,服务器技术中这个用得并不少。但这个主要用来降低硬件出错机率,还有就是像WEB服务器一类对交互性要求不高的服务中。对于MMO服务器软件造成的崩溃没有任何意义。你的程序有BUG,同样的输入同样的处理,服务器A宕了服务器B能不宕?我想90%的机率是双机都宕。

内存恢复进程?要做到这一点你就得保证崩溃时的进程的内存所有都是正确的。就是说你的崩溃肯定是不能因为内存溢出这种内存破坏而造成的崩溃而宕机。只能是除零,空指针这种非常好排查的BUG宕机。从一个不能确定是否完全正确的内存而恢复的进程来处理玩家数据,处理以后造成的问题恐怕比你解决一个宕机问题麻烦得多。我想你肯定做不到在服务器发生宕机时,可以肯定内存数据是正常的。

不从内存而是从新读配置文件重启场景服务器?给玩家较好体验?算了吧。一台服务器载配置到初始化的时间一般都会超过十多二十秒甚至更长。让玩家卡个十多二十秒还不如让玩家下线得了。。你不让玩家下线玩家自己都会下线的。当然也可以把场景服务器的逻辑弄得超级超级简单,那样的话逻辑服务器得分得相当细,总之任何一台服务器的逻辑都得超级超级简单,服务器种类会非常非常多(组队服务器,公会服务器,打怪服务器。。。。)复杂到你难以想象。。。打住。有这精力设计这种架构还是先把代码质量提高降低宕机机率吧。我看后者容易些。



总之你的整篇文章除了我说的宕机发生事后降低玩家损失外,都是在想办法提升玩家体验做功夫。这种思路本来就是错误的。因为你无论如何想办法,玩家体验都不可能好。而你不做换来的仅仅是玩家下线一次而已。只要你不是三天两头宕机,这个是可以接受的。楼主应该提升代码质量降低宕机机率而不是去想这种如何把纸加厚泼水去包住火这种无意义的东西。不要误让新人钻进入这种错误的牛角尖。


PS:其实最后说的AUTOSAVE也相当于白说。因为我想不出有哪款MMO服务端没有AUTOSAVE功能的。。。(根本不是啥听起来不错的技术,而是最最基本的功能)

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2008-8-3 03:05:00 | 显示全部楼层

Re: Re:服务器又宕机了,怎么办?

fruitie: Re:服务器又宕机了,怎么办?

前几天刚刚跑完新游戏的一次封闭测试,最高时人数跑到了近1500,顺便也提提我的体验:

AutoSave设置为5分...

小黄同志?

2

主题

330

帖子

1720

积分

金牌会员

Rank: 6Rank: 6

积分
1720
发表于 2008-8-3 11:43:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

哈。看来这里熟人不少。

7

主题

82

帖子

110

积分

注册会员

Rank: 2

积分
110
QQ
 楼主| 发表于 2008-8-4 12:31:00 | 显示全部楼层

Re: Re:服务器又宕机了,怎么办?

fruitie: Re:服务器又宕机了,怎么办?

前几天刚刚跑完新游戏的一次封闭测试,最高时人数跑到了近1500,顺便也提提我的体验:

AutoSave设置为5分...



确实,游戏上线后的工作是比较忙的,过了那个阶段就好了 ;)

AutoSave在以前的游戏中也是可以的,只是偶尔会出现数据库特别繁忙的时候,所以才提出了缓存一次的方法,这个也是实际应用过的

7

主题

82

帖子

110

积分

注册会员

Rank: 2

积分
110
QQ
 楼主| 发表于 2008-8-4 13:05:00 | 显示全部楼层

Re: Re:服务器又宕机了,怎么办?

yukun84: Re:服务器又宕机了,怎么办?

先来说说楼主的文章的问题:
除了建议加大存盘频率尽量降低损失之外,其他根本没有实用价值,都是楼主在YY...



如你所说,这些都还只是想法,真正在项目中应用的只有AutoSave加数据代理缓存


后面部分写的有些仓促,一些考虑过的问题没有写出来

从内存恢复数据存在的问题是数据已经错误,再启动后仍然会宕,这个可以添加一个数据有效性检查的模块,或者去除最新的可能有错的数据

启动服务器的时间消耗在加载数据文件上,把这部分分离后启动时间不会太久,当然,服务器协商恢复原始数据的时间需要增加


这只是技术的探讨,我相信技术是需要进步的,能够给玩家更好的体验,多花一些功夫,服务器增加一些额外开销,能够换来更好的服务,这都是值得的,也是发展的趋势

否则,一直就这样?

0

主题

15

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2008-8-4 18:06:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

对头, 总要有人先吃螃蟹。

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2008-8-4 19:26:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

当然不是“一直就这样”
其实我的意思是方向性错误
要努力让服务器不宕才是正确方向。
成功游戏的服务器所用的的技术其实相当简单的,但是代码稳定可靠。

如果你的游戏开发经验很丰富的话,你应该明白,用不是绝对照正常进行的逻辑的进程去为玩家服务的话,是非常非常危险的。你的服务器是可以不宕正常运行了。但由此可能造成的逻辑错误而引发的物品复制或其他什么的问题可比宕机大得多!
你的整篇文章的方向只是为了如何让你的服务器看起来还能正常运行,逃避BOSS的责问而已。提升玩家体验不是你这么做的。。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2008-8-5 09:44:00 | 显示全部楼层

Re:服务器又宕机了,怎么办?

能不能这样:以一定的频率备份所有进程的内存镜像,但不会存入数据库,当发生错误时就使用保存下的内存镜像重启进程。只是不知道os是否允许。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 09:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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