-
文献综述(或调研报告):
- 前言
随着网络游戏行业的迅猛发展,网络游戏的服务器承受着越来越多的压力。为了确保服务器稳定的运行,对服务器的性能进行监控,对一个大型网络游戏来说有着十分重要的实际意义[1]。当下的服务器性能监控技术虽然可以提供实时的数据,并在性能瓶颈时给出预报,但是缺乏历史数据的存储和查询,并且不同的网游服务器架构都多少有些不同,针对不同的服务器监控的内容侧重也不一定一样。开发一个适应性强、使用方便、监控信息全面的服务器监控器对于一个游戏来说意义重大[2]。
-
- 服务器性能指标
如文献[1]所给出的指标。CPU,服务器时网络中的重要设备,承载着一个网络游戏的主要业务,每天都有大量玩家要去访问服务器,一般情况下服务器需要有大数据量的快速吞吐能力和超强的稳定性。在本次设计中监控的是CPU的使用情况,而不去考虑具体CPU的性能指标这些细节上的指标。CPU使用率就是服务器上运行程序占用的CPU资源,表示该机器在某个时间点的运行程序得情况。使用率越高,说明该机器在这个时间上运行了较多的程序。使用率的高低与与服务器CPU强弱有直接关系。现在分时多任务操作系统对CPU都是分时间片使用的。而CPU对线程的相应不是连续的,未响应的线程增加,就会不断加大CPU占用,一般CPU占用率越高,服务器运行越慢。
内存,内存是决定服务器性能的关键因素,再好的CPU也需要有好的内存系统与之匹配。因为CPU运算时所需的数据都是从内存中获取的,如果内存系统无法把数据及时给CPU,CPU就不得不在一种等待状态,形成资源闲置,性能无法发挥。Linux系统为了提高效率,会提前申请内存,即使这些内存没有被具体应用使用,然后利用这些内存做缓存用,将刚打开的文件系统存入cache中,这样对应的服务器free值会越来越少,cache会越来越大。Linux服务器在内存不足时,会自动清理cache区域,释放内存,然后继续增大cache,free继续减少。
错误日志,这个并不是直接影响服务器底层的性能因素。相对来说,错误日志是一种嵌入在代码里,在一些有可能导致服务器宕机的地方进行日志输出。比如野指针,数组越界等。在宕机时可以通过错误日志来判断是哪一段逻辑出了问题。同时除了错误日志,在一些游戏逻辑关键位置也会打日志为了后面对玩家数据的监控。
-
- 服务器性能监控与分析方法
在文献[2] 介绍了集中性能监控方法。现在有的服务器监控器有基于SNMP协议的服务器性能监控方法,该方法采用SNMP协议框架,两层代理结构。主代理负责发送和接收SNMP消息,但不访问设备管理信息。各个服务器安装子代理,维护自己的库,子代理负责访问各自的管理信息,并向主代理发送信息,但不处理主代理的SNMP消息。
还有一种是基于LDAP轻量级目录访问协议,它定义了数据信息的组织方式,基于TCP/IP协议的事实上的目录服务标准。LDAP具有分布式的信息访问和数据操作功能,在分布式监控系统中,目录服务常用来记录计算资源的静态信息集合。LDAP类似于数据库,但它对查询进行了优化,并以树状结构存储数据。基本原理是在每一个网格区域配有一个LDAP服务器,负责全局监控的数据汇总和存储。它的特点是有利于不同计算节点和不同组织的划分,逐级表示计算资源。但是这个系统本身又占用了太多计算资源。
-
- 监控器架构的分析
在现有的技术基础上,根据所开发的游戏多服务器协同运作的特点,采用两层架构的方式,通过信息结构来控制监控器的工作[3]。具体来说,首先设计一个监控器,这个监控器为主代理,对服务器总体性能进行监控,包括内存使用,CPU占用等。对于游戏运行时需要的每一个服务器,在启动时发送消息给监控器,监控器收到信息后,这些服务器可以通过发送消息的形式将自己的一些运行中状态信息发送给监控器,比如日志、网关消息、玩家在线人数等。在监控器上对这些消息中的信息进行汇总分类保存。
在上一节也说服务器在运行时相互之间也是有联系的,这些关联也是服务器稳定性的一部分。文献[4]中这里在每次服务器启动时,先通过服务器与监控器之间的第一次联系确保每个服务器都正常运作。对于监控器消息的结构设计,这里的原则是不同类型的消息设计不同的结构,同一种类型的消息在使用时保持格式的通过。在监控器收到这些消息的时候,根据消息号不同和里面内容来进行区分归类[4]。
-
- 小结
通过对大量文献的阅读和研究,结合本课题所提出的系统应用范围。本系统设计的要点主要放在监控各个服务器之间的工作情况,独立的每个服务器使用CPU,内存情况。通过一个服务器监控器监控各个服务器当前的运行状况,服务器通过消息发送的方式将自己的信息发送给监控器[5]。这些信息包括了游戏中的客户端发来的消息记录、游戏逻辑日志、内存使用情况、玩家在线信息、宕机信息统计等。该系统由于要实际运行在一个真实的游戏项目中,所以要保持他的一个稳定性、易操作性、方便开发人员使用,出现问题时可以通过监控器中的信息快速解决,甚至进行一定的预防。可是,在实际情况中,一个游戏的内容是十分庞大的,所以在实际运行时还需要不断为监控器的工作进行补充。对于怎么管理服务器之间的相互关系,以及服务器与监控器之间的通信方式是重点研究的部分。
参考文献:
