服务器停服维护,回档,反外挂
一. 服务器停服维护
QA测试完成后会打出服务器更新维护的整包放到这里,同时会通知包名
下载更新包到本地,然后上传到指定的ftp目录
将更新包的信息同步给运维和运营的同学
到更新的时间点后运营同学会切换服务器状态到维护,运维同学负责停服,更新,启服等具体操作,不出意外的话是不需要程序这边做任何操作的。
服务器更新重启之后QA同学会过一遍基本功能,程序这边就看下日志是否有异常或者报错,主要关注1001和6001服,QA主要测试这两个服。QA测试通过了,服务器也没有异常和错误就可以开服对外了(一般由QA在大群里对运营同学说,运营将服务器状态切换为正常)
==注意事项:==
每次更新服务器启动之后,需要将服务器的自动封禁关闭,避免程序bug导致误封。在游戏对外跑一个小时之后如果没有战斗校验的bug可以开启自动封禁。在关闭期间需要值班同学关注企业微信的MT-外挂监控告警群,手动对外挂玩家进行封禁,具体细节参照反外挂文档。
因为1001服目前人数较多,配置和其他服不一样,1001服的战斗校验线程数量需要单独手动修改(运维操作),所以维护时需要提醒一下运维同学修改
二. 回档
数据库相关
1. 线上数据库获取
拷贝当时数据库脚本
执行 sh -x get_gameid_all_sql.sh [serverid] 备注:all有建库语句 data没有建库建表
以前的快照
获取到 实例名称
在机器上拉取
修改实例名字(rm-bp1ofj5dorx7ha83p.mysql.rds.aliyuncs.com)和导出文件的名字(mtob_game_6081 )
1
2
3mysqldump -hrm-bpXXXXX.mysql.rds.aliyuncs.com -ultgame_read -pXXX --opt --single-transaction --set-gtid-purged=OFF xxxx_game_6081 >mtob_game_6081_1111.sql
压缩下载:
mysqldump -hrm-bpxxxx.mysql.rds.aliyuncs.com -ultgame_read -pxxxx --opt --single-transaction --set-gtid-purged=OFF mtob_game_6081 | gzip > xxxx_game_6081_0111.sql.gz修改数据库常用命令
1
2
3
4
5UPDATE `localids` SET `v` = '{\"1\":[11x,400x]}' WHERE `k` = '0000000x';
CREATE DATABASE IF NOT EXISTS xxxx_game_1111_1128 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP DATABASE xxxx_game_xxxx_1202;
select * from localids;
mysql -h172.2.2.2 -uroot -pxxxx
热更新可以看服务器维护文档
回档可能需要 上传数据到服务器
2. 运营 道具操作
运营提供回档数据表格 我们把json打包热更新数据包。执行gm
自动复制key的脚本
1 | ' keyData: 脚本导出的数据 |
回档实现方案
- 按照玩家异常数据镜像导出json文件 和时间节点
- 根据节点回档
- 具体实现 在 【back/backGM.java】
反外挂
更新之后 维护期间操作
清理战斗校验次数 gsc后台 /clearCheck
关闭战斗校验自动封号 gsc后台 /setCloseAutoCheck true
- 观察对外后外挂次数新增情况,比较集中的外挂是前几个服和后几个服,主要看人比较多的服务器是不是有
异常的次数激增- (重要)对新增的次数玩家尤其是高等级玩家要确认一下,比如战斗类型,伤害的json 就是有一个观察期
确保更新没带来战斗校验的问题而对玩家误抓的可能,哪怕就算不开自动封禁让外挂跑一段时间也不能大面
积误封- 具体观察周期视情况而定,开服后不能少于一小时,如果有任何疑虑和问题及时反馈东方和亮亮排查。等确
认稳定后开始自动封禁,完成更新。- 期间外挂群内告警确定是外挂需要手动封榜封号
- 开启战斗校验自动封号 /setCloseAutoCheck false
对比数据:
- 打龙会输出如下信息 自上线起 打龙未出现误封 可以判定外挂
外挂使用日志查看战斗数据 server. log 查看并对比客户端和服务器伤害值 做成json文件发给客户端
对应的二进制文件mtgl_server/battle_check_input 下文件
历史封禁数据在logs的error*.log查看
警告信息监听的是xdb.log 10分钟内外挂数据
战斗校验计次规则
- 服务器胜负结果不一致即认定外挂并记录次数
- 次数记录在游戏服 通过网关后台 查看admin
- 页面显示的封禁数据是5天内的热数据 可以以通过查询角色按钮查询过期数据
封禁规则
OB首周试封禁外挂规则:
- 程序在服务器运行时自动识别外挂,对于识别出认定为外挂的玩家进行第一步封禁:拉黑排行榜(所有榜单),如果在推图阵容推荐,即刻删除(后续通关的玩家补位)。
- 对于(1)步骤,随即输出Log,通过企业微信机器人发送消息,外挂玩家服务器,角色名,角色ID,战力,等级,战斗校验失败次数输出。
- 运营同学根据(2)的告警信息,对玩家进行人工识别,充值信息,等级,战力,阵容,养成
情况等,如果确认,随即进行封号处理,如果觉得误封通知研发进行排行榜黑名单恢复。
识别外挂的原则:玩家对于配置表里的战斗关卡通关结果,服务器校验失败超过30次(次数随近几
天观察可以随时调整)
OB第二周自动封禁外挂规则:
- 自动封禁一个用户 输出以下信息:耍外挂的战斗类型和对应次数,充值总额,爬塔层数,推图进度,等级,战力,VIP等级
- 打龍一次即封榜,作弊10次自动封榜,作弊15次自动封号
针对外挂的处理方案
会按照充值额度区分处罚力度,详细信息如下:
服务器回档记录
**
备注:
- gsc平台:运营管理 (z4v.cn)
- mt后台:admin
备注
修改一下1001服的战斗校验连接数配置在/home/ltgame/apps/mtgl_server/config/battlecheck.properties里面的
server.connection.num=3
改成:server.connection.num=7常用指令
cat error*.log | grep 5013615 | grep BATTLECHECK | grep ERROR | grep resSucc=false
cat server.log | grep GUILD_WAR | grep 5013615