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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章