2012-03-08 56 views
0

我有一個iPhone應用程序,已提交,使大量的數據庫調用來抓取數據。數據非常小。我聽說過很多my.cnf文件,特別是max_connections和max_user_connections。
這裏是什麼似乎像my.cnf文件的,用於調整最重要的部分:ios正確設置my.cnf與iPhone應用程序

# * Fine Tuning 
# 
key_buffer  = 16M 
max_allowed_packet = 16M 
thread_stack  = 192K 
thread_cache_size  = 8 
# This replaces the startup script and checks MyISAM tables if needed 
# the first time they are touched 
myisam-recover   = BACKUP 
#max_connections  = 100 
#table_cache   = 64 
#thread_concurrency  = 10 
# 
# * Query Cache Configuration 
# 
query_cache_limit = 1M 
query_cache_size  = 16M 
# 

正如你可以在默認情況下的最大連接數見被註釋掉。這是否意味着連接數量沒有限制?當用戶嘗試使用我的應用程序和最大連接時,會發生什麼情況?他們立即得到錯誤還是等待找到連接?這與max_user_connections有什麼不同?對於所有問題抱歉,我對服務器配置瞭解不多。服務器是一個的Linode 512

+0

註釋表示使用默認值(或來自父配置文件的條目)。您的iPhone應用程序是直接連接到數據庫,還是有應用程序服務器? – 2012-03-08 17:59:44

+0

它連接到 – user1108720 2012-03-08 18:10:14

+0

我只是用它被註釋掉它允許應用程序用戶直接連接到數據庫服務器151個最大連接 – user1108720 2012-03-08 18:11:39

回答

0

max_connections設置確定的客戶端連接的最大數目。如果所有連接都用完,下一個連接的客戶端將收到錯誤Too many connectionsdefault value is 100,所以如果你有這個選項註釋掉了,它將會是100.

設置max_user_connections是每個用戶的最大連接數。因此,如果將其設置爲10,則用戶Bob在接收到上述相同錯誤之前只能有10個連接,而max_connections是每個人的總數。如果沒有指定值,則設置max_user_connections的默認值與max_connections的值相同。

當您收到錯誤,你將要優雅地處理它。您可以嘗試重新連接,或給用戶一個友好的錯誤消息,如「系統忙,稍後再試。」

在我們的生產服務器,我們max_connections設置爲1024。你的旅費可能會改變。如果查詢重量輕,則可以增加數量。我猜測1024可能是一個很好的開始。只要確保您的應用程序服務器正常處理錯誤並隨時調整數字即可。

+0

所以沒有辦法通過使用wait_timeout和一個免費的應用程序(希望能夠獲得相當數量的下載)來讓它等待max_connections降到極限以下,應該如何設置? – user1108720 2012-03-08 18:14:40

+0

我用我們使用的計數更新了我的答案。使用wait_timeout可能無濟於事,只要您在完成配置後立即關閉應用程序服務器上的MySQL連接即可。例如,使用PHP,它們將在腳本完成時自動關閉。 – 2012-03-08 18:22:53

+0

其實wait_timeout似乎沒有做我認爲會做的事情 – user1108720 2012-03-08 18:22:59