RTMP协议在线教育课堂web视频直播点播平台EasyDSS在大量设备开启录像后为什么会导致系统卡死?

EasyDSS视频平台提供视频直播及点播功能,当然如果有调用视频录像回放的需求,也可以选择录像版本存储录像。但是在录像功能中,如果全部开启录像功能,如果在比较差的服务器中运行,则会导致系统处于卡死状态,无法正常运行。

录像1.png

在后台中查看 10085 端口,10085 端口是 EasyDSS 中的默认 rtmp 推流端口。发现大量的 CLOSE_WAIT 端口状态的请求存在。

70.png

C 层主要是采用 nginx 处理 rtmp 推流数据,因此采用单任务模式,即处理完一个事件任务后,才会处理下一个事件任务。图中存在大量的 CLOST_WAIT 端口存在,证明大量的 http 请求在等待处理中。随着一段时间后,这些端口会慢慢消失。

因此重点查询何种任务在阻塞队列的运行。经过分析后,认为是对磁盘的 I/O 读写阻塞了任务队列,查看 kernel 的配置文件。

71.png

原则上因为磁盘的 I/O 阻塞问题,属于服务系统性能问题,在代码层面能够处理的很小。但是因为客户要求,尽量能够最大的支持路数。

目前默认的录像时间为 4s,即对于一路视频流,需要默认4s内都要打开一次文件,写入文件和关闭文件这三种操作。其中写入文件的操作无法省略。因此从减少打开和关闭文件的操作上进行优化,将录像时间修改为 20s,即一路流,20s 才会打开和关闭一次文件。减少的大量在此方面的消耗。

修改完毕后,满足了客户的要求。但是此种情况,如果一路流推送小于 20s 则无法被录像,因此应该根据实际场景选择对应的录像时间。

录像2.png

猜你喜欢

转载自blog.csdn.net/Black_3717/article/details/113125412