94. 2024-01-07周总结

  1. 准心问题,父节点rect
  2. mongo数据库负载过高问题
  3. 线上问题
  4. aab太大问题

1. 获取屏幕右上角坐标

有个需求是需要有个准心可以在整个屏幕移动,准心的锚点设在了左下角,那就需要知道右上角的坐标,因为Unity会根据屏幕分辨率进行适配,所以右上角的坐标是动态的。一开始想的是可以拿到屏幕分辨率,根据右上角的屏幕坐标通过RectTransformUtility.ScreenPointToLocalPointInRectangle转成Unity坐标,但是不知道是不是使用方式不对,试了下拿到的是一个很大的值。但是在测试过程中,有个变量引起了我的注意,就是父节点的rect变量,里面有个width和height,这两个正好就是右上角的坐标。直接拿这个变量在真机上测试果然可以。但是父节点的适配要选择stretch模式才行,不然不会根据屏幕分辨率调整width和height。

mongo数据库负载过高

线上机器报警,负载过高,看了下2核的CPU跑到了4,top了下看到mongo CPU使用率一直在130%。

现学了下mongo如何排查性能问题,主要使用db.currentOp()命令,看了下主要卡在的是我们的一个战报插入操作,要耗时10多秒。这个操作之前版本都没有出现过问题,这个版本因为插入太频繁导致数据库连接池用完的原因改成了bulkWrite,看了下目前的数据库有40W行,所以卡顿原因就很显而易见了,没有建索引导致插入过慢。

然后又现学了下mongo如何建立索引,主要是通过createIndex来建立,比如我们这个表db.FightResult.createIndex({FightId:1}, {unique:true, name:"FightResult_FightId"})

另外又把其他表改建索引的也都建了下。

线上问题

游戏又一次上线测试的时候当天线上有玩家反馈推图打不了。上去查看日志发现有报错,通过报错定位到了问题。本来想通过热修复来做的,但是热修复做完太久了,又没有相关文档记录步骤,不太敢直接用。所以想到临时解决方案,先直接修改内存变量来临时修复,同时修改代码并进行内网测试,下次重启再把问题修复。

这次暴露了几个问题:

  • 问题的根本原因是分支直接没有测试到,需要加强分支的测试
  • 报错机器人没有通知(内外网问题),这个导致我们比较被动,通过玩家反馈才知道有这个bug,跟上一个原因一样,需要加强因为测试环境不同的代码分支
  • 热修复解决方案没做好,没有文档记录,同时也没有演练,流程性都需要有文档记录流程,包括发客户端/服务端版本,重启服务端,热修复服务端等等,同时重要的流程要进行演练

aab太大问题

Google Play上传aab的时候报错,大小超过200MB上线

通过勾选Unity配置Split Application Binary解决

其他

周六提车啦,5座小速腾换了个6座SUV,终于可以载着全家一起出去游玩了(就差那么一个座位😂),车子好大还不太好把握好距离,这个就慢慢习惯吧。比较难受的是车位就只有一个,停车比较麻烦,现在只能将就下,等过年开一辆车子停老家。