Mysql

如何限制同時 MediaWiki 到 MySQL 數據庫連接的最大數量?

  • November 19, 2010

我們在 MySQL 數據庫上有一個 MediaWiki wiki。但是,其他應用程序也在訪問 MySQL。目前我們最多有 100 個與數據庫的連接,其中 MediaWiki 允許 10 個。

然而,在高峰時間,超過 10 個使用者同時嘗試訪問 wiki,這意味著他們可能會遇到 MySQL 連接錯誤。

具體來說,消息說:

“數據庫名稱”有問題

對不起!本網站遇到技術難題。

嘗試等待幾分鐘並重新載入。

(無法聯繫數據庫伺服器:未知錯誤(“mysql數據庫名稱”))

我的想法是限制MediaWiki 內(例如在 LocalSettings.php 中)嘗試訪問數據庫的連接數。這樣人們就不會收到錯誤消息——他們只需要等待更長時間。

有沒有辦法做到這一點?還是有更好的解決方案?

在應用程序中,您需要精確地執行您想要的操作,是的。

首先,我會花一點時間來反對這一點:看來該站點已獲得足夠的使用,需要更多的數據庫連接,而這種類型的事情可能無法真正得到整體幫助。(例如,我只能假設 MediaWiki 的編寫方式並非如此,它不必要地使用了超出其需要的額外連接)

我的基本想法是,如果可能的話,盡量為網站提供它需要執行的東西。如果這會導致共享 MySQL 伺服器出現問題,那麼可能需要解決這個瓶頸。無論是等待還是錯誤,無法連接到數據庫都會導致一定數量的使用者離開該站點,並且通常會給他們帶來負面體驗。


“簡單”的解決方案是將錯誤消息更改為更友好的消息,但這可能無法解決問題。

假設您不能提高 10 個連接的限制,則可能需要更改應用程序(並且可能需要進行相當廣泛的更改),以便每次數據庫連接嘗試都包含在擷取連接失敗的程式碼中,等待預定時間,然後再試一次一定次數。

你可能很幸運,MediaWiki 中可能有這樣的功能可以配置。如果是這樣,更熟悉的人可以提供幫助。另一個(更有可能)幸運點是如果數據庫訪問程式碼被非常嚴格地包含,所以這個解決方案不需要更改程式碼中的 300 多個位置來執行此操作(一個耗時且令人煩惱的前景) , 至少可以說)。

如果這些錯誤很少發生,我只會推薦這樣的解決方案。如果它是經常發生的,它可能最終導致站點爬行,它不斷等待/重試數據庫連接……並且最終仍然最終返回錯誤,無論如何。

引用自:https://serverfault.com/questions/203855