2012-09-28 8 views
28

Am weitesten verbreitet Optionen in database.yml sind folgende:, was die Nutzung des Pools Option ist in database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

Ich weiß, dass die Verwendung der meisten der oben genannten, aber Pool. Also ich möchte wissen, was ist die Verwendung der Pool-Option in der Datenbank.yml oder es gibt andere Parameter, die wir für die Anwendung mit sehr viel Verkehr einstellen müssen.

Antwort

22

Er legt die Anzahl der möglichen Verbindungen pro Ruby-Prozess. Also, wenn Sie Ihre Rails App einfädeln oder Transaktionen übermäßig nutzen. Die Grenzen hängen von Ihrer Einrichtung ab. Bedenken Sie:

  • 50 rubin verarbeitet
  • jeweils mit 100 Fäden
  • a mysql mit einer Einstellung von 1000 gleichzeitigen Verbindungen

so ist es sinnvoll, dass jeder Prozess maximal 20 Verbindungen öffnen kann (50 * 20 == 1000) zu einer gegebenen Zeit. Sie würden also den Wert pool auf 20 oder weniger setzen.

+0

wo passt diese 100 in "jeder mit 100 Fäden" in die obige Gleichung? (50 * 20 == 1000) –

+0

Bedeutet dies, dass die Poolgröße nur vom Arbeitsprozess abhängt und nicht von den Threads? @moritz –

3

Für alle anderen, die nach einer Antwort auf diese Frage suchen, scheint die Grundidee zu sein, dass eine Datenbank nur so viele gleichzeitige Verbindungen unterstützen kann, so dass es eine Möglichkeit gibt, die offenen Verbindungen zu begrenzen. Das Attribut pool gibt die maximale Anzahl von Verbindungen an, die zu einem bestimmten Zeitpunkt geöffnet werden können.

Weitere Informationen hierzu finden Sie unter http://guides.rubyonrails.org/configuring.html#database-pooling. Der Guide sagt nicht explizit, dass Pool die gesamten Verbindungen für die App ist, aber das ist der Sinn, den ich nach dem Lesen bekomme.

Verwandte Themen