日记 2021 年 2 月 4 日 (周四)
再一次,证明我是对的。
现象:客户端网络环境差的情况下,多次申请话权,导致应用崩溃
原因:通过分析日志,原来是因为由于客户端接收到多个允许讲话指令;第一个指令过了 3.6s 才回来;第二个指令过了 1.8s 才回来;第三个指令过了 0.2s 就回来了;由于代码中设置的过滤条件是 2s,就是说 RTT 2s 以内的指令都会进行被处理,从而导致开启 2 次推流动作,开启了 2 个线程进行采集编码麦克风数据,导致其中一个线程 OOM 了。如下:
解决:既然清楚了客户端崩溃问题出现的原因,也就有了解决的思路。剩下的就是执行,如何避免出现这种情况,如何过滤忽略掉这种情况。从而修复这个客户端崩溃问题。wj 的意见是要做处理,如果已经在推流了,那么第二次就应该忽略。大体思路是一致的。但要执行这个方案,需要增加很多代码,缓存,占用内存空间不说,在多线程场景可能会引入其他问题。因为我清楚的知道,我的处理逻辑是生效了的,规避了第一次超时的允许讲话指令。所以我认为,只需要缩短 RTT 时间,就可以避免这个问题。同时,RTT 过长的指令,其实不满足项目要求,是不达标的。通过修改一个参数,巧妙的解决了 OOM 问题;
感悟体会:
1、时间戳是一个很有意思的东西。用的好的话,可以事半功倍,减少工作量,提高我们的效率。
2、我还是太懒散了。今天问了 lbx,开发票最快也要等一个星期。也就意味着,我的公积金无法在年前提取出来了。为什么事情是这样的结局呢?前几天,上周,本来可以提前去处理的。由于公司、工作、项目上的事情,占用了我太多的时间,并没有把这些重要的事情放在心上。
3、昨晚,8 点半下班就走了,去了棠下村一个理发店剪发。好几年没有去那个老板理发了,现在依然在营业也就说明他的店的能力了。不像之前坑我会员卡的那家理发店的老板,一脸猥琐的样子。有点伤感的是,时间过得很快,这几年发生了很多事情。我的发质越来越差,发量越来越少。这样忙忙碌碌,有没想过是为了什么。
4、今天收到了 InfoQ 的小牛了,很可爱,很萌。今年要牛转钱坤哦。距离回家,只剩下几天了。有没有设想过,要过一个怎样的春节呢?那自然是,每一天都能购自由、轻松、幸福的生活了。
版权声明: 本文为 InfoQ 作者【Changing Lin】的原创文章。
原文链接:【http://xie.infoq.cn/article/56afdfc0edb516c5dfd555469】。文章转载请联系作者。
评论