2014-10-17 49 views
0

我正在開發一款MMORPG,它相當的不錯。長時間處於活動狀態的MySQL連接不好?

但是,我現在注意到MySQL服務器有一個自動連接終止時間限制。所以在x時間之後,連接終止。所以,我的服務器發生的事情是在大約8小時的運行時間後,用戶無法在註銷時登錄或更新其角色。

一個簡單的解決辦法是使超時值非常大,但我想知道這是一個壞主意嗎?

另一個解決方案是,在進行SQL查詢之前檢查連接是否仍然有效,並且如果不啓動新的連接。儘管如果它沒有不良副作用,我更喜歡第一種選擇。

+0

用戶將直接連接到您的SQL服務器?爲什麼不讓它們連接到服務,並且該服務連接到數據庫。這樣你可以避免MySQL的超時,你可以驗證傳遞的信息。如果用戶可以直接訪問數據庫,他們可能會做壞事。 – 2014-10-17 14:34:40

+0

沒有用戶不直接連接到數據庫。用戶連接到我的服務器,然後從服務器根據用戶的操作在sql server上執行查詢。雖然用戶只能在兩種情況下與sql進行交互(當他們登錄時將所有帳戶信息加載到內存中,並且在註銷時將所有帳戶信息保存到數據庫中)。 – Ricky 2014-10-17 15:02:56

+0

如果他們連接到您的服務器,服務器應該在請求完成後關閉連接,然後每次他們需要對數據庫執行某些操作時都會打開一個新請求。這將避免超時。 – 2014-10-17 15:14:52

回答

1

如果你還沒有這樣做,我想說最好的選擇是在服務器上使用合適的connection pool,而不是重複使用單個連接。

現在,增加超時應該是安全的,但是MySQL 可能有存在與連接有關的內存泄漏(類型),因此時常丟棄連接可能會更安全。例如,如果您使用的是動態生成的準備查詢(某些API可以使查詢免受SQL注入攻擊的影響),那麼MySQL可能會在緩存內存中所有準備好的查詢時遇到問題。

不幸的是,您可能必須自己實施這種驅逐行爲。

相關問題