2012-09-28 15 views
28

opzioni più ampiamente usato in database.yml sono di seguito:qual è l'uso dell'opzione piscina in database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

so l'uso della maggior parte di quanto sopra, ma piscina. Quindi voglio sapere qual è l'uso dell'opzione pool in database.yml o ci sono altri parametri che dobbiamo impostare per l'applicazione che ha un traffico molto intenso.

risposta

22

Si imposta la quantità di possibili connessioni per processo rubino. Quindi, nel caso in cui stiate collegando l'app per i vostri binari, o usate eccessivamente le transazioni. I limiti qui dipendono dalla configurazione. Considerate questo:

  • 50 rubino elabora
  • ciascuno con 100 thread
  • un mysql con un ambiente di 1000 connessioni simultanee

quindi ha senso che ogni processo può aprire al massimo 20 connessioni (50 * 20 == 1000) in un dato momento. Quindi impostare il valore pool su 20 o meno.

+0

dove si inserisce questo 100 in "ciascuno con 100 thread" nell'equazione precedente? (50 * 20 == 1000) –

+0

Significa che la dimensione del pool dipende solo dal processo di lavoro e non dai thread? @moritz –

3

Per chiunque stia cercando una risposta a questa domanda, l'idea di base sembra essere che un database può supportare solo così tante connessioni simultanee, quindi c'è bisogno di un modo per limitare le connessioni aperte. L'attributo pool specifica il numero massimo di connessioni che possono essere aperte in un dato momento.

Vedere http://guides.rubyonrails.org/configuring.html#database-pooling per ulteriori informazioni a riguardo. La guida non dice esplicitamente che pool è la connessione totale per l'app, ma è quello che ho capito dopo averlo letto.

Problemi correlati