之前新开发的『新版局域网架构的音视频』产品,正式上线到了两家客户稳定的使用了 2 个月。不过最近一次更新之后,多次出现每隔 3-5 天后台服务都会出现假死的情况,重启服务后恢复。
服务并没有停止,但是客户端和管理工具都无法正常访问服务。
新版的服务端和客户端大部分都是共用同一套代码,这样比较方便开发和后期的维护。
不同的是服务端实现了一个请求队列来并发处理所有客户的发送的请求申请。
服务端请求队列流程,如下图:
服务器和客户端设备的监控数据都很正常。通过分析服务端和客户端故障当日日志,发现出现问题的时候都是通话双方设备同时拨打对方,并且其中一方设置了自动接听的情况下发生的。
问题现象表现为:
分析完线上的情况之后,就需要在测试环境下复现线上的问题,确认问题到底是程序引起的,还是硬件差异、网络情况、设备固件版本等其他因素导致。
项目的单元测试都是采用的黑盒测试,是有覆盖同时拨打的并发情况的。因为后续才加的自动接听功能,所以自动接听情况下的并发测试并没有覆盖到。
自动接听流程如下图: