RTMP推流協議視頻直播點播平臺EasyDSS請求時間接口返回的數據打印在前端頁面全屏飄紅問題解決

TSINGSEE青犀視頻團隊接到過很多比較大的項目,這類項目的特點是接入數據量多,處理數據量也大,在對服務器造成負荷的同時,也對程序造成了堵塞。

TSINGSEE2.png

拿EasyDSS視頻直播點播平臺舉例,一旦EasyDSS處理很多數據的時候,或者接入的數據量大,會出現訪問很慢的情況,造成程序的阻塞。因此我們爲了解決這個問題,在每次的請求之中加上了請求時間,一旦請求時間多了,就會主動斷掉請求,避免造成阻塞情況。

但是加上請求時間後,我們發現了新的問題,即請求時間接口返回的數據打印在前端頁面上,會出現全屏飄紅的現象。

22.png

因此我們推測是由於這個請求時間造成的,由於爲了防止每次的請求阻塞,導致阻塞的請求過多,就會出現socket連接數過大的現象,系統則會崩潰。而我們請求時間限制功能的添加,導致系統處理不過來時,爲了防止socket連接過大,就向前端返回錯誤的信息,前端所返回的數據無法解析,則會有全屏飄紅現象。

由於一開始的代碼中defer函數中的操作,一旦出現數據訪問很慢的情況下,就會報錯,導致數據的重合,前端無法辨識。因此將一開始超時代碼替換了以下的代碼,解決了問題。

cfg := conf2.GetConf()
// 如果打開超時,則設置超時時間
if cfg.HttpCOpenTimeOut {
   // 注意:使用超時接口,再使用 c.Get() 和 c.Set() 可能會有併發異常。但是 c.Bind() 中內部使用了 c.Set()
   rC.Use(timeOutLog())
   rC.Use(timeout.Timeout(time.Duration(cfg.HttpCTimeOut) * time.Second))
}

解決後EasyDSS將會正常返回數據,界面不飄紅。

23.png

如果大家比較關心我們前文提到的EasyDSS在實際項目中的運用,可以閱讀:遠程教育視頻直播點播解決方案如何實現教學直播+錄播+在線考試?

TSINGSEE青犀視頻雲邊端架構產品還包括EasyGBS、EasyNVR、EasyCVR等優秀的視頻智能分析平臺,歡迎大家瞭解和測試。

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