我在尋找什麼是行業中常用/最佳實踐。如何處理連接數據庫時發生的問題?
假設以下假設的情景: 如果我的應用程序服務器接受200名用戶的請求,他們每個人都需要數據庫訪問。 但我的數據庫max_connections是100.
如果所有200個用戶同時請求,但我們只有100個max_connections,其他請求會發生什麼情況,哪些未被最大連接服務?
在現實世界中:
將剩餘的100個請求被存儲在某種隊列上的應用程序服務器,並一直在等待DB連接?
我們出錯了呢?
我在尋找什麼是行業中常用/最佳實踐。如何處理連接數據庫時發生的問題?
假設以下假設的情景: 如果我的應用程序服務器接受200名用戶的請求,他們每個人都需要數據庫訪問。 但我的數據庫max_connections是100.
如果所有200個用戶同時請求,但我們只有100個max_connections,其他請求會發生什麼情況,哪些未被最大連接服務?
在現實世界中:
將剩餘的100個請求被存儲在某種隊列上的應用程序服務器,並一直在等待DB連接?
我們出錯了呢?
基本上,如果你的數據庫服務器只能處理100個連接,以及所有的Web連接「需要訪問數據庫,」你必須確保不超過100個請求被允許爲活躍在任何一個瞬間。 這是此場景的「裁決約束」。 (這可能是很多的一個。)
您可以接受你的服務器上「多達200個併發連接」,但你必須排隊這些請求,使100所活躍請求的限制是不超標。
有很多種,可以使用很多方法做到這一點: 負載均衡器,應用服務器,甚至阿帕奇/ nginix指令。有時候,網頁只是許多不同服務器並行運行的流程的前端。無論你如何操作,都必須有一種方法來管理有多少請求處於活動狀態,並對餘數進行排隊。
還要注意的是,即使你可能有「 200活動連接」到Web服務器,這是極不可能的,這些客戶「的所有200在精確同時點擊自己的鼠標。 」 請求以隨機速率進入,因此可能永遠不會遇到任何類型的延遲。但是你的系統必須被設計來處理最壞的情況。