注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 金庸群侠传X 技术宅分享,金X0.5上线发生的故事
查看: 3929|回复: 6
打印 上一主题 下一主题

[原创] 技术宅分享,金X0.5上线发生的故事 [复制链接]

帖子
435
精华
1
积分
546
金钱
7976
荣誉
11
人气
189
评议
0
跳转到指定楼层
楼主
发表于 2014-6-7 09:20:06 |只看该作者 |倒序浏览

金X由于被推荐到ACFUN游戏排行第一名,并同时在17YY、7K7K、U77、17173等各大小游戏网站上线,迎来了在线用户数量的爆炸式增长。目前各大网站使用外链方式,也就是实际链接到金X官网的服务器。

金X 0.5 刚上线,UV从3000+增长到2万+,PV从400万增长到1000万+


这里说一下金X的服务端架构,因为是一直凑合的一个环境,目前非常老土:

使用的一台很老的DELL 2950服务器(8线程CPU,2G内存),100MB独享联通/电信双线带宽,服务器操作系统 CentOS6.3,WEB服务器为apache,部署的服务包括:


1、apache文件服务(silverlight主体xap包 + 图片、音乐【均动态加载】)

2、游戏联机PK server,侦听两个tcp端口

3、数据库mysql

4、官网wordpress(php)

5、日志分析服务awstats(crontab启动)

6、防火墙等等

7、代码svn服务器


一台如此破旧的服务器,部署了这么多功能,还是单点,可想有多么的脆弱。

上线后,玩家普遍反映加载非常缓慢,玩家体验很不好。对于长期来说,肯定需要换服务器以及整个应用的部署结构,当然这些需要时间和资源,我们先在当前已有的资源下进行优化。

由于apache参数是系统安装时默认的,于是首先想到的优化apache的参数。我的想法也很简单:

1、由于游戏资源是动态加载的,于是我把KeepAlive打开,增加KeepAliveClients的连接数;

2、由于玩家众多,将默认的MaxClients从250增大(同时增大StartServer、Spare等参数),以提高并发服务能力;


修改后,自己试了试,感觉效果还算比较明显。于是就让整个应用跑了起来。结果……

一小时后,玩家反馈游戏载入不了了,赶紧ping服务器,ping不通……连接不上了。木有办法,打电话给IDC机房让硬重启。


重启后把各个服务起起来。思考可能导致的问题,怀疑有可能导致死机的:

1、awstats分析日志的服务启动太频繁(1分钟一次)

2、apache内存吃爆了


于是开始行动,

1、关闭crontab

2、将apache的若干参数调小(MaxClients、StartServer等)

修改后,感觉服务器性能明显下降了,访问网页、图片等明显变慢,不过想着先应付着至少不死机,回家!结果……


出租车还在路上,手机收到玩家反馈,游戏载入不了了——服务器又崩了。 木有办法,继续打电话给IDC机房,硬重启。

下车飞奔到家,打开电脑,重新开始配置服务器,思考可能导致的问题:

1、还是只可能是apache内存撑爆

继续改小各个针对并发的分配数,缩小KeepAlive的超时时间!试运行!——半个小时候继续崩溃!


没辙,开始一行一行看apache的配置文件,最后发现两个问题:

1、KeepAlive 真的需要开么?——虽然金X有大量的图片和音乐需要动态加载,理论上KeepAlive打开的话对于单个玩家的加载速度有好处,但这样对于整体的大规模玩家数量的访问,无法有效的回收和利用服务器资源,并且会导致玩家请求大规模排队的情况,表现就是 一些用户觉得“很流畅”,另一些用户觉得“非常卡”

2、work.c的MaxRequestPerChild默认设置成0了——在大量客户端请求的情况下,(因为我客户端使用的线程池没有指定池的maxsize,所以会疯狂的请求服务端,造成每个客户端可能有一大堆的request,这个地方可能会导致内存爆掉)


果断修改两处,然后尝试着再将MaxClients数量调大一些,发布!

—— 载入速度大为提升!

—— 稳定运行,至今没死机了!


经验教训:

1、优化参数需要结合服务器性能;

2、大规模用户并发访问时,慎用KeepAlive



附apache当前活跃clients监控命令:

watch -n 1 -d "pgrep httpd|wc -l"


使用道具 举报

帖子
1809
精华
0
积分
926
金钱
2038
荣誉
2
人气
15
评议
0
沙发
发表于 2014-6-7 10:49:29 |只看该作者
上A站了,这个还真不知道

使用道具 举报

帖子
99
精华
0
积分
50
金钱
906
荣誉
0
人气
0
评议
0
板凳
发表于 2014-6-7 10:49:52 |只看该作者
作者大大的辛苦大家很理解,也很支持,但是作为一款单机游戏,为什么一定要做到自己服务器上呢?目前的宣传阶段可以理解,但是这并不适于游戏本身的长久发展。

使用道具 举报

帖子
264
精华
0
积分
132
金钱
1636
荣誉
0
人气
0
评议
0
地板
发表于 2014-6-7 13:24:57 |只看该作者
网站分流咋没有4399呢,我第一次玩就是在4399

使用道具 举报

帖子
11
精华
0
积分
6
金钱
121
荣誉
0
人气
0
评议
0
5#
发表于 2014-6-7 13:39:11 |只看该作者
之前几天加载特慢 都没玩

使用道具 举报

帖子
223
精华
0
积分
112
金钱
3061
荣誉
0
人气
2
评议
0
6#
发表于 2014-6-8 11:07:31 |只看该作者
这才叫分析能力!支持。

使用道具 举报

帖子
113
精华
0
积分
57
金钱
1291
荣誉
0
人气
0
评议
0
7#
发表于 2014-6-8 13:29:59 |只看该作者
可以考虑下代码优化,即:
    加载完成释放链接,在用户需加载新资源时重新链接。这样可以有效降低实时的Clients的连接数,达到最大复用

使用道具 举报

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

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2026-5-5 00:58 , Processed in 0.340264 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到