2012-09-28 10 views
28

najczęściej używane opcje w database.yml są następujące:co jest użycie opcji basenie w database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

Znam korzystanie z większości wyżej ale basenem. Więc chcę wiedzieć, jakie jest użycie opcji pool w database.yml lub jest jakikolwiek inny parametr, który musimy ustawić dla aplikacji o bardzo dużym natężeniu ruchu.

Odpowiedz

22

Ustawia ilość możliwych połączeń na procesie Ruby. W przypadku, gdy tworzysz aplikację szyny lub nadmiernie wykorzystujesz transakcje. Ograniczenia zależą od konfiguracji. Rozważ to:

  • 50 rubin przetwarza
  • każdy z 100 wątków
  • MySQL z ustawieniem 1000 jednoczesnych połączeń

więc ma to sens, że każdy proces może otworzyć maksymalnie 20 połączeń (50 * 20 == 1000) w określonym czasie. Więc ustawisz wartość pool na 20 lub mniejszą.

+0

gdzie to 100 w "każdym ze 100 wątków" pasuje do powyższego równania? (50 * 20 == 1000) –

+0

Czy to oznacza, że ​​rozmiar puli zależy tylko od procesu roboczego, a nie od wątków? @moritz –

3

Dla każdego, kto szuka odpowiedzi na to pytanie, podstawową ideą wydaje się być to, że baza danych może obsługiwać tylko tyle równoczesnych połączeń, więc musi istnieć sposób ograniczenia otwartych połączeń. Atrybut pool określa maksymalną liczbę połączeń, które można otworzyć w danym czasie.

Aby uzyskać więcej informacji na ten temat, patrz http://guides.rubyonrails.org/configuring.html#database-pooling. Przewodnik nie mówi wprost, że pula to łączne połączenia dla aplikacji, ale taki jest sens, jaki otrzymuję po jej przeczytaniu.

Powiązane problemy