金X因为被推荐到ACFUN游戏排行第一名。并同一时候在17YY、7K7K、U77、17173等各大小游戏站点上线。迎来了在线用户数量的爆炸式增长。眼下各大站点使用外链方式。也就是实际链接到金X官网的server。

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

这里说一下金X的服务端架构,由于是一直凑合的一个环境,眼下很老土:

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

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

2、游戏联机PK server。侦听两个tcpport

3、数据库mysql

4、官网wordpress(php)

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

6、防火墙等等

7、代码svnserver

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

上线后,玩家普遍反映载入非常缓慢。玩家体验非常不好。

对于长期来说。肯定须要换server以及整个应用的部署结构,当然这些须要时间和资源。我们先在当前已有的资源下进行优化。

因为apache參数是系统安装时默认的,于是首先想到的优化apache的參数。我的想法也非常easy:

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

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

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

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

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

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

2、apache内存吃爆了

于是開始行动。

1、关闭crontab

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

改动后,感觉server性能明显下降了,訪问网页、图片等明显变慢。只是想着先应付着至少不死机,回家!

结果……

出租车还在路上。手机收到玩家反馈,游戏加载不了了——server又崩了。

木有办法,继续打电话给IDC机房,硬重新启动。

下车飞奔到家,打开电脑。又一次開始配置server,思考可能导致的问题:

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

继续改小各个针对并发的分配数,缩小KeepAlive的超时时间!

试执行!——半个小时候继续崩溃。

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

1、KeepAlive 真的须要开么?——尽管金X有大量的图片和音乐须要动态载入。理论上KeepAlive打开的话对于单个玩家的载入速度有优点。但这样对于总体的大规模玩家数量的訪问,无法有效的回收和利用server资源,而且会导致玩家请求大规模排队的情况,表现就是 一些用户认为“非常流畅”。还有一些用户认为“非常卡”

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

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

—— 加载速度大为提升。

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

经验教训:

1、优化參数须要结合server性能;

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

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

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

一次httpserver优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)相关推荐

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

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

  2. 原创游戏 - 金庸群侠传X0.4发布

    经过N长时间的努力,一直业余时间做的小游戏终于发布到0.4版本了,呱唧呱唧一下~ 屌丝程序员同时兼任 策划.宣传.美工.音乐.编剧,实在是苦得啊!!!! 游戏首页地址:点击打开链接 "飞雪连 ...

  3. C++开源游戏推荐,《金庸群侠传》复刻版和3D重制版

    声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 铁血丹心论坛 https://www.dawuxia.net/forum.phphtt ...

  4. 网页游戏课设-金庸群侠传

    金庸群侠传 经过一个学期的努力,根据自己所学的知识,模仿了一个使用unity3D写的一个游戏金庸群侠传.这里废话就不多说了,现在就讲解一下.(在兼容性问题上要使用chrome,而且版本不能太低,不然会 ...

  5. 原创游戏,金庸群侠传X 0.5公布

    首先说一下背景,我个人从小特别爱玩游戏,对小时候一款游戏<金庸群侠传>DOS版更是情有独钟,自己工作以后,利用业余时间自己整了一个原创的改编版丢网上(找图片.音乐.写剧情更是虐心之极,耗时 ...

  6. 原创游戏,金庸群侠传X 0.5发布

    首先说一下背景,我个人从小特别爱玩游戏,对小时候一款游戏<金庸群侠传>DOS版更是情有独钟,自己工作以后,利用业余时间自己整了一个原创的改编版丢网上(找图片.音乐.写剧情更是虐心之极,耗时 ...

  7. 金庸群侠传 Windows版:用 Object Pascal 和 SDL 实现的 DOS 游戏《金庸群侠传》的重制版

    金庸群侠传 Windows版:用 Object Pascal 和 SDL 实现的 DOS 游戏<金庸群侠传>的重制版. 原 DOS 下面的经典游戏<金庸群侠传>pascal 复 ...

  8. sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...

    kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...

  9. 小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)

    金庸群侠传 游戏运行界面:   游戏实现源码: 1 package game.logic; 2 //人类 3 public class Person { 4 public String name; / ...

最新文章

  1. 神经网络早期的感知机模型
  2. python安装pip_Python的pip安装总是失败怎么办?
  3. 《机器人与数字人:基于MATLAB的建模与控制》——2.3节指数映射和k过程
  4. jq.validate.js
  5. MSM8909平台 LED背光的控制
  6. 多线程爬虫工作流程图 to 子年
  7. L2-006 树的遍历 (25 point(s))
  8. .net知识和学习方法系列(二十三)嵌套类
  9. 流量造假:“蔡徐坤微博转发过亿”幕后推手一审获刑五年
  10. VFB组件:Scintilla控件(代码编辑器)
  11. Java调用阿里云短信接口发送手机验证码
  12. 【实验技术笔记】细胞表型检测之细胞周期(PI 染色)
  13. VUE解决背景图片没有铺满的问题
  14. 国产时钟芯片应用探讨,CLB2305对标CY2305, CLB30110兼容IDT:8L30110,TI:CDCLVC1310
  15. JAVA版12306抢票工具
  16. OD使用经验【转载】
  17. Android 项目规范 1
  18. 移动前端手机输入法自带emoji表情字符处理
  19. 思科cisco交换机如何查找环路及解决方法
  20. 你不知道的东西----半月痕(中医诊断)

热门文章

  1. 机场新增卫星厅对中转旅客影响的评估方法
  2. 7-3 欢迎参加贵工程2021年C语言程序设计大赛! (5 分)
  3. 线性表中顺序表基本运算的实现---数据结构(C)
  4. dev shm php,/dev/shm 介绍 --转载
  5. python基础七之copy
  6. 【Android进阶】Junit单元測试环境搭建以及简单有用
  7. linux 中常用安装配置
  8. sql查询语句中的乱码 -- 前面加N
  9. 【转】地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法 C语言
  10. hdu 4430 Yukari's Birthday(二分)