[发明专利]一种检测游戏服务器多线程使用同一虚拟机的方法有效
| 申请号: | 201811097328.4 | 申请日: | 2018-09-19 |
| 公开(公告)号: | CN109445877B | 公开(公告)日: | 2022-03-18 |
| 发明(设计)人: | 刘马良;刘美智;孙国军;张健;李邦戈 | 申请(专利权)人: | 珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司 |
| 主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F11/30;G06F11/34 |
| 代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 俞梁清 |
| 地址: | 519000 广东省珠海市*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 检测 游戏 服务器 多线程 使用 同一 虚拟机 方法 | ||
本发明涉及一种检测游戏服务器多线程使用同一虚拟机的方法,包括以下步骤:S1,对游戏服务器进程虚拟机提供的接口函数执行HOOK操作;S2,HOOK操作完成后记录系统信息并生成相应查找表;S3,再次调用接口函数时,系统检索查找表进行对比分析并生成记录文件;S4,上传记录文件至人工后台。本发明可以在不修改服务器代码的前提下完成对多线程使用同个LUA虚拟机问题的检测工作,并且同时生成核心转储文件,工作人员基于核心转储文件即可快速发现问题,排除故障,在游戏正式上线前尽可能规避此类问题造成服务器宕机事故的出现,在维系玩家游戏体验的同时提高了经济效益。
技术领域
本发明涉及一种检测游戏服务器多线程使用同一虚拟机的方法,属于游戏服务器领域。
背景技术
目前LUA开发语言应用场景较为广泛,部分游戏服务器也支持LUA语言。因为游戏服务器业务逻辑比较复杂,所以多会采用多线程架构的模式,而在LUA语言环境中,如果一个LUA虚拟机同时被两个或两个以上线程占用且同时执行LUA代码,会导致服务器出现未定义行为,进而引起游戏服务器的崩溃。目前业界在服务器测试阶段缺少对该类问题的有效检测手段,现有技术方案需要对服务器代码进行修改或添加,这就使得服务器维护难度上升,而游戏在上线后也容易发生服务器宕机等问题,严重影响了玩家的游戏体验,进而产生较大的经济损失。
发明内容
针对现有技术的不足,本发明提供了一种检测游戏服务器多线程使用同一虚拟机的方法,所采用的技术方案包括以下步骤:
S1,对游戏服务器进程虚拟机提供的接口函数执行HOOK操作;
S2,HOOK操作完成后记录系统信息并生成相应查找表;
S3,再次调用接口函数时,系统检索查找表进行对比分析并生成记录文件;
S4,上传记录文件至人工后台。
进一步,所述HOOK操作包括对系统内特定事件进行监控,如果监控到特定事件发生时,向监控程序发送通知。
进一步,所述系统信息包括虚拟机地址以及使用该虚拟机的线程ID。
进一步,所述查找表用于存储键值对,其中,所述键值用于提供索引。
进一步,所述步骤S3具体包括以下步骤:
S31,服务器再次调用接口函数时,根据虚拟机地址在查找表内检索对应的线程ID;
S32,将检索出的线程ID与当前使用虚拟机的线程ID进行匹配;
S33,如匹配结果相同,服务器正常运行;
S34,如匹配结果不同,服务器停止运行并执行核心转储操作。
进一步,所述核心转储操作包括在进程收到信号后终止时,将终止时刻的系统状态信息生成对应的记录文件。
进一步,所述记录文件内包括但不限于进程地址空间内容及进程状态等信息。
本发明的有益效果为:本技术方案在不修改服务器代码的前提下,完成对多线程使用同个LUA虚拟机问题的检测工作,并且同时生成核心转储文件,工作人员可以通过核心转储文件即可收集出现问题的第一现场信息,分析解决服务器隐藏风险,在游戏上线前尽可能规避此类问题造成服务器宕机的发生,保证了游戏的正常运行,在维系玩家游戏体验的同时提高了经济效益。
附图说明
图1所示为根据本发明的总体流程图;
图2所示为根据本发明实施例的流程图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司,未经珠海金山网络游戏科技有限公司;珠海西山居移动游戏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811097328.4/2.html,转载请声明来源钻瓜专利网。





