PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verbindungspooling in Rails deaktivieren, um PgBouncer zu verwenden

TLDR; nichts ändern

Das Pooling in Rails unterscheidet sich von dem Pooling in PGBouncer. Der Rails-Verbindungspool ist eine Gruppe von Verbindungen, die jedem Thread innerhalb dieses Prozesses zur Verfügung stehen, normalerweise nur 1. Jede Verbindung in Ihrem Rails-Pool hat eine Verbindung zu Ihrer Postgres-Datenbank oder PGBouncer, wenn diese vor Postgres sitzt. In einer großen Rails-App führen Sie mehrere Rail-Prozesse auf jedem Server und mehrere Server hinter einem Load Balancer aus. Etwa so:

Ohne PGBouncer erstellt jede Verbindung zu Postgres einen neuen Postgres-Prozess. Bei der Skalierung sollten Sie die Anzahl der ausgeführten Postgres-Prozesse begrenzen, damit CPU und Speicher nicht ausgelastet werden. PGBouncer fasst Verbindungen aus all Ihren Rail-Pools über alle Prozesse und alle Server hinweg zusammen und schaltet effizient zwischen ihnen um.