数据分析-统计游戏时长踩过的坑

先说下背景,服务端记录玩家行为,数据入库oracel,用于分析,记录玩家id、tm、action以及其它一批需要用到的数据,大概长这样:


运营的设想是这样的,每次游戏登陆服务器记录一条login,每次退出游戏记录一条logout,然后可以通过logout-login来统计每次游戏长,再按天或按生命周期去累加数次游戏时长;

然而事情并不是这样的,听我一一道来:

并不是这样子之一

同一秒内,竟然出现多条login和logout,这样我只能根据入库时间来判断哪条action在前,结果并不科学,因为我们是通过redis入库,压根不可控;


应对方案:

修改login记录的时机,修改为登陆网关时记录,同时排查bug,修复同一秒内记录多条action的问题;


并不是这样子之二:

多条login对应1条logout,说白了,就是某些原因导致logout没有正常记录到(比如闪退啥的);


应对方案:

改bug呗,还能怎么样;


并不是这样子之三:

跨天的情况怎么办?今天23:50分login,明天2:00才logout,全局统计似乎并没有问题,可是分天统计不是乱套了么;

应对方案:

1、以每天24点为节点吧,默认为在当天23:59:59logout了,用这个时间减去当天最后一次login,形成一一对应,计算在线时长,这样就能保证当天的数据正常了;

2、那跨天的第二天呢?每天0点对所有在线玩家强制写一条login吧(当然别一次性写,如果在线高会对服务器产生影响),这样就不会出现,跨天时只有logout,没有login的情况了;


并不是这样子之四:

肿么某个时间段大批玩家只有login没有logout呢,原来是服务器重启了或者停服维护造成的;

应对方案:

服务器重启和停服前数据存档的过程中给所有在线玩家加一条logout吧


tips:

这两条action还是很重要的,至少对于我们游戏来说,统计活动、留存、游戏时长都依赖于斯,所以需要慎重慎重,不能出差错;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容