问题1: 项目OOM
有一场景是通过门禁系统对面板机进行下发人脸,项目OOM。
原因分析:
低级问题,进行数据下发,设备要求执行的协议是进行下发照片base64数据,想当然的对照片批量进行转换Base64(OOM)List体过大。
解决方案:
改为for循环,一张张照片转换下发,下发完成及时清理。
问题2: 项目OOM
有一场景是通过门禁系统对面板机进行下发人脸,后续调用业务系统OOM。
原因分析:
iot系统进行统一合并至物联网关后,业务线进行统一下发物联网关,不允许直接对接操作设备,由于同步人脸数量过多,整个学校的人员,大概两万多张。哈哈哈哈哈~并发过高,大量的Base64流打过去,物联网关系统down了。
解决方案:
网关增加限流处理。
由于图片是从阿里云取的,改为传递url,但是要注意图片有效期
问题3: mq疯狂堆积
有一场景是通过门禁系统对面板机进行下发人脸,发送mq进行异步处理,然后自消费下发到设备,线上mq疯狂堆积和重试,对公司所有业务线都造成了严重影响。
原因分析:
我特喵~我也是接盘的。
- 发送mq没有考虑过这种场景是否适合使用mq,下发2w个人脸,直接mq怼怼怼了两万条进去,其中信息中还包含着base64流,一张照片1M算的话,2w张照片*设备数量,诸位自行体会mq的磁盘占有量。
2.没有考虑超时未回复ack的情况,在频繁重试。
3.异常处理不到位,对业务异常和代码异常都进行重试处理,如果是业务异常,照片不符合规范重试也没用。
解决方案:
临时紧急发版,消费代码全部删除,全部进行消费。
取消mq的使用,考虑下发人脸的场景既不涉及支付又无关痛痒,改为异步线程处理,LIst中含两万个名单,本身对内存占有率影响不大。
问题4: 数据库拖死
设备会实时的进行通行记录的上传,某某某同学通过哪个设备进入了哪里,由于校方有台设备长期处于离线过程中,某一天它突然上线了,开启离线上传,可谓是一瞬间怼过来了8w条数据,由于整个公司的业务线都是一个数据库上,导致其它业务线都受影响。
原因分析:
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
点,真正体系化!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!