TSINGSEE青犀視頻團隊接到過很多比較大的專案,這類專案的特點是接入資料量多,處理資料量也大,在對服務器造成負荷的同時,也對程式造成了堵塞,

拿EasyDSS視頻直播點播平臺舉例,一旦EasyDSS處理很多資料的時候,或者接入的資料量大,會出現訪問很慢的情況,造成程式的阻塞,因此我們為了解決這個問題,在每次的請求之中加上了請求時間,一旦請求時間多了,就會主動斷掉請求,避免造成阻塞情況,
但是加上請求時間后,我們發現了新的問題,即請求時間介面回傳的資料列印在前端頁面上,會出現全屏飄紅的現象,

因此我們推測是由于這個請求時間造成的,由于為了防止每次的請求阻塞,導致阻塞的請求過多,就會出現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將會正常回傳資料,界面不飄紅,

如果大家比較關心我們前文提到的EasyDSS在實際專案中的運用,可以閱讀:遠程教育視頻直播點播解決方案如何實作教學直播+錄播+在線考試?
TSINGSEE青犀視頻云邊端架構產品還包括EasyGBS、EasyNVR、EasyCVR等優秀的視頻智能分析平臺,歡迎大家了解和測驗,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232535.html
標籤:其他
下一篇:2維陣列函式的一道題
