如何避免資料庫不響應導致資料庫執行緒池和業務執行緒池全部掛起?

時間 2022-01-24 13:45:56

1樓:玖玖久

資料庫讀寫執行緒做超時,哪怕非同步了,堵住了沒有超時一樣會死。再用個守護執行緒去檢測這些排隊的情況,一旦超出閾值就報警吧。

2樓:DeffPuzzL

在一般業務併發處理中,能丟擲主業務就丟擲主業務,讓主業務能最大併發處理。

當然如果在主業務中資料庫響應很慢,而且持續時間很長,那麼無論執行緒池中多少個執行緒(執行緒無線多也不是什麼好事),最終還是被消耗殆盡。

額如果你業務處理全部在乙個資料庫中,全部掛起,這種問題,沒法解決,喊DBA優化你的資料庫或者公升級配置吧。

如果是暫時的,可以對業務每筆採用超時時間,超時則業務回滾,沖正。

如果你的部分業務不在乙個資料庫中, 可以做乙個流量限制,讓餘下的執行緒可以正常處理其他業務。

3樓:清風哥哥

可以設定等待響應時間,超過即丟掉請求。資料庫響應不及時也是很常見的,不能一直死等

4樓:Learner

與資料庫互動,最優的方式還是非同步io啦

如果這個實現不了,那麼只能搞個執行緒池去負責了,注意,這種io密集型任務,多開幾個執行緒

最好做成連線池,內部實現和暴露介面分離,介面返回的資料型別completablefuture最好了,這樣非同步處理,io時也不需要你的業務執行緒等待

雲資料庫對比傳統資料庫好在哪?

這是哪個雲廠商又來搞運營話題了嗎?凡事有利必有弊,需要根據自己的情況選擇合適自己的。正式一點來說,雲資料庫省掉了機房 機器 安裝 調優 運維等等下幾路的基礎工作,外包給別人了,而且擴容 縮容之類的工作也都可能外包了。可是,這個外包並不總是比自己靠譜。而且還有服務響應速度,資料安全保密,是否跟你有競爭...

資料庫的選擇?

破緊逼 推薦學習oracle,因為sqlserver還是做了比較多的封裝,但是oracle會比較複雜,概念也比較多,能學到比較多的資料庫細節,之後學其他資料庫就游刃有餘 postgres django,在搬瓦工買個vps,3.99刀用一年。資料庫遷移沒什麼難度,django提供了 URL routi...

Arcgis建立的個人資料庫和檔案資料庫有什麼區別呢?

xomap Personal GDB 檔案實質是Access庫,檔案大小最大2G。File GDB則沒有檔案大小上線,且可以跨平台。 補充,gdb可以使用gdal驅動中的filegdb api進行簡單讀寫 相同 均為GeoDatabase資料模型的實現,均為物件導向的地理資料庫,不開源 不同 個人地...