浅谈网游服务器的承载
本人对做了四年的游戏服务端,对市面上面的一部分游戏框架有一定了解。今天就以用得最久的那套框架:烈火战神为例。
烈火战神那套游戏框架一开始上线的时候可以同时承载在线2000人,同屏承载300。时至今日,从那套框架衍生出来的二次开发产品能承载个800人就不错了,由于客户端很多没优化得好,同屏100人就很卡了。
三个原因局限:
1:对于那套框架最大的一个局限就是用的单进程单线程服务器,也就是说引擎启动随机分配到一个CPU上面。只有一个CPU在处理问题,其它的CPU只能干看着。好了,中央处理器能力就这么大,你的代码写得越低效,承载的人数就越低。对于太耗性能的东西我总结出来几个点。
2:第一,AOI大头,估计占比40%以上,主要表现在人物的移动,玩家的出现与消失,属性的变更方面,说到底就是有变化就会对你身边的实体进行广播(可以想象一下,同屏PK的场景,那数据量够大吧)。其次的话就是除了人物以外的实体AI,就拿怪物的AI来说,在线程遍历的时候,无时无刻不在检测周边出现的实体。
3:再有的话就是衍生出出来的代码臃肿问题了,公司是要赚钱的,哪那么多时间让你去去除臃肿,性能优化(其实,很多公司知道,一旦上线,哪有这么多人玩啊!一般小平台几十个人,根本不会卡。你跟老板要时间来优化,你会被打的).
解决方案:
1:你如果还想用单线程的话也可以,其实引擎启动的时候可以给它绑定多几个CPU(SetThreadAffinityMask(hThread, dwMask),这是windows API函数)。但是这种局限在Windows环境下面的,而且也不能绑定过多,一般超多三个就会出现CPU的竞争情况。还有一种的话就是多线程咯,可以按照场景来分,也可以按照系统来分(个人的喜好一般是喜欢把AOI和聊天系统分出来,其它都还好)
2:再有就是代码问题了,其实这是小创公司一个共同的弊病了。很多不好理的逻辑,一般都是根据需求来开发的。策划都想玩创新,结果导致,代码里面这里一个IF那里一个While。很伤。然而,一百多个系统,乱糟糟,建议,如果想开发好的引擎,先拿半个月来一次瘦身最好
附加:服务器在查找方面需要注意好,简单直接才是最好的方式,看到很多游戏服务器动不动就用到了MAP结构,模板啥的,显得很高大上,其实并不然。比如做nActorID查找的时候,人数一多就是挺耗费性能的,不是哪种查询能够解决掉的问题。这种的话就必须要做直接索引了,我看过两种直接索引方式,第一种的话是直接把内存指针做成玩家的nActorId,强转就能得到玩家的Object。第二种方式的话就是拆分8字节,直接索引得到玩家的Object。
浅谈网游服务器的承载相关推荐
- 一些关于网游服务器的东东
拼包函数及网络封包的异常处理(含代码) 本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明:本文可以不经作者同意任意转载.复制.传播,但任何对本文的引用都请保留 ...
- 无缝世界网游服务器架构的设计思路
过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少,不过回过头来看,对网游架构设计方面的帮助却是不多.老外还是玩儿console game的 ...
- 网游服务器通信架构设计
随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长.目前,网游行业比较紧缺的是具有较深技术功底的"专家型"开发者, ...
- 组装网游服务器,网游服务器的搭建
网游服务器的搭建 谈完网游服务器的选购之后,我们就开始考虑网游服务器的具体搭建问题了. 网游服务器在网络中并不单指网游服务器本身,而是包括登陆服务器.网关服务器.游戏服务器和数据库服务器.有的服务器可 ...
- 网游服务器通信架构的设计
转自:http://www.cppblog.com/jack-wang/archive/2009/01/02/70963.aspx 随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个 ...
- 【无缝世界】无缝世界网游服务器架构的设计思路
过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少,不过回过头来看,对网游架构设计方面的帮助却是不多.老外还是玩儿console game的 ...
- 【转】无缝世界网游服务器架构的设计思路
原文:http://jinghuainfo.iteye.com/blog/1192805 过去一年中,花了很多时间在考虑服务器架构设计方面的问题.看了大量文章.也研究了不少开源项目,眼界倒是开阔了不少 ...
- 开源大型网游服务器架构项目
开源大型网游服务器架构项目 Trinity,国人习惯称T端,是在M端(MaNGOS)的基础上,发展出来的大型网游服务器架设软件.此项目为开源方式,任何人都可以在Trinity官方网站免费下载其源码,进 ...
- 宝德网吧服务器型号,14款网吧、网游 服务器横向评测
随着近年来网吧连锁经营与网络游戏产业的蓬勃发展,网吧专用服务器和网络游戏服务器的需求量也随之迅速增长.为此,<中国计算机报>联合赛迪评测共同组织了本次网吧.网游服务器横向评测,希望为用户采 ...
- 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法
本文中的算法采用twitter的snowflake算法,具体请搜索介绍,原来是用Scala写的,因我项目需要,改写成C++语言,主要用于高效的生成唯一的ID, 核心算法就是毫秒级时间(41位)+机器I ...
最新文章
- UI Bootstrap
- java 内部类怎么new_[转]【Java】内部类(Inner Class)如何创建(new)
- Vue+Openlayers实现绘制线段并测量距离显示
- xp电脑怎么进入bios
- Python Django 之 Views HttpRequest HttpReponse
- php秒杀框架,yii框架redis结合php实现秒杀效果(实例代码)
- keras提取模型中的某一层_Keras做图片分类(四):迁移学习--猫狗大战实战
- 集成学习:Boosting与Bagging
- eBay SOA开源平台
- java面试自我介绍
- oracle ogg checkpoint,OGG目的端的checkpoint table被drop的修复方法
- Promise的resolve和reject使用
- 防辐射门行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 如何查看宇视科技摄相机是否支持反向供电
- 什么是百度SEO?百度SEO优化怎么做?
- 创业书籍推荐,这本书最经典!
- [echarts]echarts的canvas画布大小与容器大小不一致的解决方案
- 安卓android按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片
- “求同”不是最终目标,英特尔致力打造有“差异”的精彩
- 面试|C# .net 面试题
热门文章
- edge浏览器突然不能播放视频解决办法
- Kyrie Irving邀请粉丝加入Lineage Logistics的Share A Meal运动,帮助受COVID-19疫情影响的人们
- spark原理及其优化
- AcWing 292 炮兵阵地
- java阿法狗国际象棋_[转帖]被阿法狗和AlphaZero刷屏之后,聊聊国际象棋和中国象棋AI...
- phpcms 下载模型列表页直接点击下载
- angular 易犯错误
- 5G技术在广播电视中的应用方式
- 前端开发工程师原生html进阶指南
- [BZOJ3772]精神污染(dfs序+主席树)