2016-12-31 88 views
0

我的項目是一個包含動態頁面的網站。MySQL MAX每小時連接最佳值

每當用戶運行一個查詢(它返回由PHP生成的表中顯示的結果)時,我連接到數據庫,查詢它並立即斷開連接。

如果我估計我的用戶可以做的查詢/小時的最大值,結果可能是60分鐘x 5查詢/分鐘= 300查詢/小時。

我還有一些JavaScript生成的附加查詢,我可以爲這些添加額外的100個小時。

因此,考慮到上述情況,我的MAX CONNECTIONS ...應該是400.當然,這可能是最大值。

這是正確的嗎?你能告訴我什麼是「平常」的價值嗎?

編輯:我在這方面沒有任何經驗,我不是dbA。我認爲限制每個賬戶的這些數字是很好的安全策略。

我的連接代碼是:

$db_conn = mysqli_connect("localhost", $username, $password, "Database"); 
if (mysqli_connect_errno()) 
    { 
    $err_message = 'Unable to connect to DB'.PHP_EOL.mysqli_connect_error(); 
    ... 
    } 
+0

這完全取決於您的環境,但我沒有看到爲此設置下限的理由。計算並乘以100甚至1000.我不會建議將每小時的查詢數低於100,000。 – LStarky

+0

是什麼讓你認爲mysql設置是每小時*的最大金額?據我可以看到它是**最大同時客戶端連接**允許:https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_connections – rednaw

+1

嘗試使數據庫連接持久性 –

回答

1

不要限制MAX_CONNECTIONS_PER_HOUR,MAX_QUERIES_PER_HOUR,或者類似的東西,當你GRANT訪問你的PHP Web應用程序。沒有什麼可以來的。如果你的PHP應用程序達到了這些限制,它會開始向用戶拋出令人討厭的晦澀難懂的錯誤消息。這些東西不適用於Web應用程序。它適用於企業風格的應用程序,其中adam,barney和charlie在MySQL服務器上都有自己的用戶名和密碼。

Web服務器機器通常只有一個或兩個用戶名/密碼組合代表所有用戶使用。在用戶知道密碼的MySQL服務器上創建帳戶是一種不安全的做法。

至於整體最大連接數量,它取決於你的MySQL服務器的大小以及服務於你的web應用程序的web服務器的數量。 mysqli_ has persistent connections built in,所以連接被重新使用。當連接用完時,通常PHP請求會排隊。

每個網絡服務器機器可能連接100個連接,除非您的網絡服務器機器是巨大的四核怪物,每個內存都有16g內存。

+1

順便說一句,你在你的問題中做的負載計算是健全的。當你準備擴展這個應用程序時,這種計算會再次出現。 –

+0

我的網站將被託管,所以我猜服務器連接號碼沒有問題。我的理由是安全。我對此完全陌生 - 這就是我問「這是(我的想法,那是對的)」的原因嗎?「感謝您的答覆和評論。 – Mikey

+0

不要讓您的託管服務提供商限制MAX_CONNECTIONS_PER_HOUR等!他們可能不會嘗試,但如果他們這樣做,則將其解僱並獲得另一個提供者。認真。 –

1

首先...

你是什麼限制這個目的是什麼?如果您擔心服務器資源,則不需要。 MySQL非常高效,可以管理每小時的查詢數量。爲什麼設置一個低限值,以後可能會導致問題?我根本沒有看到有什麼根據來設置這個值,或者肯定沒有什麼比你最瘋狂的想象能夠想象你的網站的增長速度更慢。所以,如果你決定指定這個,確保它是一個很大的數字,例如100,000。

其次...

也許你要問,因爲您在創建用戶帳戶的過程是。但是,這裏指定的參數是可選的,並且在大多數情況下可能不是太大的問題。我會建議,除非有特定的問題,否則你只是不指定這些選項。

http://dev.mysql.com/doc/refman/5.6/en/user-resources.html

+0

是的,我今天正在創建賬戶 - 這個網站完全由我自己開發,對於我的一個項目,所以我沒有其他人可以問。 – Mikey