單頁面多次跨服務器連接mssql速度優化解決方案

場景:

0、原始所有數據庫均爲access,爲了優化速度,將容量佔比最大的文章表升級爲mssql數據庫,並且遷移到了另一臺服務器;

1、程序與mssql數據庫不在同一內網;

2、連接一次約200-400ms,程序首頁進行了6次連接,導致頁面響應時間長達2.2-2.6s;

 

問題分析:

將程序頁面複製到mssql服務器,通過ip連接自身數據庫6次,響應時間僅爲200-400ms。將程序頁面複製到其他web服務器,響應時間仍爲2s+。說明與服務器性能無關,主要爲網絡問題。

單次響應時間長達200-400ms,應爲請求通過各網絡節點+web服務器防火牆、安全組出/入+sql服務器防火牆、安全組出/入時,累計產生的延遲。同時,每次請求都會重複這些步驟,最終導致響應總時間長達2s+。

 

解決方案:

將首頁需要連接的6個模塊內容的數據,在後臺數據提交階段,就同時保存到同服務器的專用access表裏(正則表達式也在此環節應用,首頁直接讀取結果,不用每次訪問都執行一次。此優化也能提升1s)。該表,僅保存首頁需要讀取的數據字段及內容,如6個模塊的標題、mssql數據庫的id、添加時間、及部分過濾後的content。

由於僅保存小部分剛需內容,所以該表數據庫很小,響應速度很快。且該表內數據,僅最新的幾條是實際使用。其餘過期數據爲冗餘數據,有必要時,可全部清楚進一步提升響應速度。

 

總結:

該解決方案雖有點怪異,但針對該特殊場景,仍具有一定價值。缺點是增加了程序的複雜程度。

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