一次http服务器优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)

面对游戏服务器因用户激增而出现的加载缓慢及频繁崩溃问题,本文详细记录了通过调整Apache参数进行优化的过程与心得,包括KeepAlive的使用考量及MaxRequestPerChild的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

金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"



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值