引擎客户端纹理缓存溢出故障处理
现象描述
当引擎客户端检测到单个进程的纹理缓存数据上限或者整系统的纹理缓存数据上限超过预设的阈值时,会上报纹理缓存溢出 (VMI_ENGINE_EVENT_CACHE_OVERFLOW)事件,用户会从操作界面看到相关的提示信息(具体的提示信息取决于ISV的实现)。
对系统的影响
当此故障发生时,引擎客户端缓存的纹理数据与引擎服务端缓存的纹理数据不一致,会导致后续使用纹理绘图时出错。引擎客户端上报事件VMI_ENGINE_EVENT_CACHE_OVERFLOW通知用户后,会断开与引擎服务端的网络连接,释放本地的缓存纹理数据,并处于退出状态。
当此故障发生时,引擎服务端会被动断开与引擎客户端的连接,释放本地的缓存纹理数据,并从online运行状态切换为offline运行状态;offline运行状态下云手机里的APP依然会继续运行,但此时无法接收到引擎客户端的触控输入,APP的音频/绘制指令也无法传输到引擎客户端。
可能原因
引擎客户端会在本地缓存应用的纹理数据,以便提高对反复使用的纹理数据的处理效率并降低网络带宽。
引擎客户端对单个进程的纹理缓存数据上限和整系统的纹理缓存数据上限都做了合理的限制和老化机制,避免过多占用引擎客户端的内存同时保障优化效果。
当引擎客户端检测到单个进程的纹理缓存数据上限超过预设的阈值时,会上报纹理缓存溢出 (VMI_ENGINE_EVENT_CACHE_OVERFLOW)事件。引擎本身内置的纹理缓存老化机制会阻止此情况的发生,当发生代码逻辑错误或者其他严重的内部故障时,可能会意外触发该场景。
当引擎客户端检测到整系统的纹理缓存数据上限超过预设的阈值时,会上报纹理缓存溢出 (VMI_ENGINE_EVENT_CACHE_OVERFLOW)事件;此时可能是由于引擎服务端启动了过多的进程,导致所有进程的纹理缓存数据相加超过预设的阈值。
操作步骤
- 在云手机中,通过Android的多任务功能查看目前在Android后台运行的所有进程,手动结束部分后台进程。
- 主动断开引擎客户端和引擎服务端的连接,此时引擎客户端和引擎服务端都会自动释放纹理缓存数据。
- 引擎客户端再次连接引擎服务端,业务恢复正常。