游戏服务端大访问量大并发的优化解决方案?

游戏服务端大访问量大并发的优化解决方案?,第1张

所有的对象都放在内存,20万用户以下无压力。

如果游戏的用户很多,例如超过50万,内存就会不够,可使用LRU算法来淘汰一些数据。

流程:收到用户请求 - 在内存查找用户对象 - 如果不存在就从数据库中加载- 放入内存cache-如果cache中的用户超过20万 - 用LRU算法淘汰最古老的用户数据。

避免同步的IO *** 作,所有会发生写数据库的 *** 作:例如角色获得了经验,要更新数据库;这类和游戏逻辑相关、安全性要求不高的保存 *** 作,一律用异步 *** 作,由后台的数据库保存线程定期保存。

流程:如果要保存到数据库 - 检查该对象是否已有标志为在保存队列中 - 如果为假 - 将对象放入保存队列。 后台保存线程的流程:从队列中获取要保存的对象 - 保存 - 置保存标志位为假。

内存cache + 异步保存模式,并发 每秒1000+ 不会有任何压力,而且正常情况下每个请求的处理时间不会超过50毫秒。

邮件 *** 作一定产生大量IO *** 作,而且都是同步 *** 作,可用上面的cache机制处理,或者专门的邮件服务器。

如果是DNF之类的格斗类游戏,因为对系统响应的时间要求特别高,50毫秒都嫌慢,这种情况下,瓶颈是在网络上,可用UDP包来解决。搜索UDP,有大量文档。

如果用户数是海量的,例如超过500万,或者对并发的要求更高,例如每秒5000+次请求,这种指标明显超过了单机的处理能力,这个时候就必须采用分布式结构,使用多台服务器。可参照EJB二次远程调用的原理实现多机分布式结构,搜索EJB,也有大量文档。

没事不要用c或者c++写游戏服务器端,c#和java这类历史悠久、有大量工具包、程序员一抓一大把的语言最好。性能不是问题,少BUG、稳定、开发周期短才是最重要的。

一、磁盘整理
一般来说,刚安装好 Windows 2000后的十几天里,你会觉得运作的速度和性能都很令人满意。不过好景不长,某一天的某个时候,你就会突然发现计算机爬得比蜗牛还慢,在随便打开个档案时硬盘却跑得跟蚂蚁走一样。其实真正的原因在于档案区段过度分散,这也是谋杀 Windows 2000 性能的头号凶手。
Windows 2000 跟其它的 *** 作系统一样,并不会把档案以连续的形式存在硬盘上,而是散得到处都是,所以如果你的档案片段非常分散,你的硬盘就得花很多时间才能读取一个档案。这个问题和磁盘整理的重要性都常常被忽略,却常是吞噬Windows 2000 性能的罪魁祸首。所以改善系统性能的首要工作,就是磁盘整理。整理以后最多可以加快一倍的处理速度,不过一般都是加快一半的速度。
Windows NT 没有磁盘整理工具,但是 2000 就有 Executive Software 提供好用的 Diskeeper 程序。到「开始」工作列,等菜单展开后选取"程序 o 附件 o 系统工具 o 磁盘整理工具"。然后在最上面的控制面版选择你要检查的硬盘代号,接着按下「分析」。计算机会检查磁盘驱动器,告诉你是否需要整理。如果真的需要整理,只要用鼠标再按一次就可以开始整理工作了。
朋友应该时常整理硬盘,至于整理的频率就要看服务器硬盘有多忙。如果你想表排时间定期整理,必须要有 Diskeeper这个程序的完整版才行,不然可以用其它厂牌的磁盘整理工具,譬如 Raxco Software 出品的 PerfectDisk 2000。这个软件功能非常强大,可以主动整理你的硬盘。
二、优化你的服务器
作个为局域网的主机,你存储档案的服务器每天都得承受无情的摧残。访问者增删或修改档案,所存取的资料量少说也有好几MB,甚至以GB计。如果想知道服务器每天受了多少委屈,你可以利用 Windows 2000 的「性能」公用程序来检测档案服务器的性能。你可以定期检视,得出统计图来找出服务器工作的流动量消长(「性能」程序的详细使用方法请参考 Windows 2000 Server Resource Kit)。
Windows 2000 有一项功能可以马上减轻服务器的负荷,可是一般人却没想到这一点,就是「离线档案」功能。其实正式的名称应该是「客户端快取」,不过这个功能不是用来加速 *** 作系统执行性能的,可是使用者却可以用来改善网络的速度。我们知道服务器的CPU 会把某些工作指示快取到内存,以便加速执行性能;Windows 2000 会把资料快取到内存里,以便加速硬盘执行性能。客户端快取则是以类似的概念把网络资料快取到客户端的硬盘上,以降低网络流量。虽然这样并不能真的促进服务器的性能,但是因为本地端快取的关系,所以网络的使用者可以发觉网络速度变快,也因为整体网络的负荷量减轻,所以服务器比较能处理其它的工作。
那么如何使用这个功能呢?
(1) 一个步骤当然是启动全公司系统的客户端快取功能。在群组原则中把离线档案的客户端快取功能打开。除了开启这个功能外,还可以把使用者存到网络上的档案也快取一份到本地端,然后 Windows 2000 会直接使用本地端的这份快取档案,除非档案有所更动。
(2) 第二步是启动每一个共享资料夹的客户端快取功能。在档案总管里共享的文件夹上按鼠标右键点选「共享」选项,然后按「快取处理」,之后会有三个选择:手动快取文件。使用者必须告诉计算机要让文件在离线以后也可以使用。如果你只想让 Windows 2000 对使用者在网络上制作的档案进行快取工作,就要选这个设定。
(3) 自动快取文件。如果共享的数据夹内的数据常常变动,最好就选这个选项。如果使用者开启这个共享资料夹的文件,Windows 2000 就会自动快取到本地端,这样一来就算服务器离线,档案仍然可以用。不过这个选项对性能没有助益。
(4) 自动快取程序。这个选项对里面有只读数据的共享数据夹最有用。如果使用者打开这个资料夹的档案,Windows 2000 会自动快取到本地端,除非服务器端的档案版本比较新。这就是你能节省频宽的地方。
三、增加内存
微软的 Office 2000 可能是在Windows 2000网络中最常执行的应用程序,可是内存不足也是影响 Office 2000 执行性能的首因之一。但只要有充足的内存,大部分程序的执行性能都会改善。
所以解决方法当然是多买几条内存。但是到底要多少?首先必须知道 Windows 2000 需要多少内存。微软的官方说法是 Windows 2000 只需要 64MB 就可以动,不过我建议至少要有 96MB。另外如果要同时跑好几个 Office 程序,那么每执行一个 Office 程序就要多加 4MB;Access 和 Outlook 要另计,因为这两个程序更耗内存,所以要多加 8MB。举个例子,如果你们公司的使用者要同时执行 Word、Excel 和 Outlook,那么计算机里至少要有 96MB + 4MB + 4MB + 8MB = 112MB 的内存,所以买的时候要买 128MB。
如果朋友不想花那个钱买内存,这个时候可能就要用优化内存的软件来协助解决内存不足的问题,不过效果没那么显著。
四、删除不需要的功能
Windows 2000 因为影响执行能力、消耗存储器的主要原因就是安装了太多不必要的功能。例如 Computer Browser 这项功能对于台式计算机其实是不必要的。这个服务的功能在于记录网络上有哪些计算机,再把这份清单提供给其它计算机。大部分的公司都是让服务器执行这项功能,而不是台式计算机。
想知道可以关闭哪些功能,唯一的方法就是直接看功能清单,然后看看关闭这些功能后有什么影响。在「功能」的控制面板有每项功能的简短说明做为参考。到「控制面板」选择"系统管理工具/功能"。Windows 2000 预设开机时启动某些后台程序的功能,但有很多根本不是每天都要用到的。不过在把某项功能完全停用之前,最好在「启动类型」那一栏把那项功能改设成「手动」,这样子真的需要时就可以重新启动这项服务。
五、加速登录
你登录Windows 2000 时,「开始」工作菜单应该只要几秒钟就会出现,关机注销也应该是差不多时间。可是如果你的计算机上有太多使用者的设定文档,开关机的动作就会像老牛拖破车。这是因为使用者设定文件资料之故。如果你增加自己专属的使用者文件,开关机时间会更久。
微软为此开发了很好用的修正程序,叫做:「数据夹重新导向」。资料夹重新导向功能会把文件和设定移出使用者的设定档,然后集中存放在网络上。这样一来 Windows 2000 在使用者登录的时候需要下载的资料量就少了很多,登录时间自然大幅缩短。
要开启这个功能必须使用群组原则。选择"使用者设定 o Windows 设定 o 资料夹重新导向",然后在以下列出的项目上按下鼠标右键,重新导引同名的资料夹:
(1) 用程序资料
(2) 桌面
(3) 我的文档
(4) 「开始」菜单
资料夹重新导向还有一个好处,就是可以简化文件备份的手续,因为所有文件都放在同一个地方。不过最大的挑战是在教育使用者把他们的文件都存放在「我的文件夹」里。
不过你得花点时间学习资料夹重新导向功能每个选项的意思,还要看看 resource kit 里面有哪些执行这个功能的最佳方法。不过一般说来,预设设定提供的就是最好的方法。
六、驱动程序的升级
加强 Windows 2000 执行性能的基本功就是要时时更新。 Windows 2000 内建的驱动程序不一定是最好的,所以你要把各项设备的驱动程序时时更新,或是安装最新版的 Windows 2000 组件。好好利用 Windows Update这个功能,时时与硬件厂商保持联系,让你的驱动程序保持在最新的状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12644542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存