Ich habe einige Gedanken über die Einstellung der passenden Poolgröße (in database.yml).
Ich sah eine ähnliche Frage bei what ist die Verwendung der Pool-Option in database.yml , musste aber noch weiter gehen, um dies besser zu verstehen.
Hier ist mein Setup. Ich habe Instanzen mit Unicorn mit 5 Worker-Prozess '. Ich habe auch Sidekiq-Instanzen mit Gleichzeitigkeit auf 5 gesetzt (ich bin davon überzeugt, dass 5 gleichzeitige Threads).
Was sollte ich für meine Poolgröße beachten? Welche anderen Faktoren sollte ich berücksichtigen?
Das ist soweit ich weiß (zitiert von einem Ingenieur, mit dem ich vorher gesprochen habe):
Angenommen, Sie belassen es auf der Standardeinstellung 5. Es bedeutet nur, dass innerhalb von "a Einzelprozess ", die Poolgröße beträgt 5. Der Pool ist pro Prozess. Es ist nicht systemweit, also hat ein Wert von 5 nicht bedeutet, dass Sie auf 5 Prozesse beschränkt sind, bedeutet es nur, dass jeder Prozess hat einen eigenen Pool der Größe 5.
Zusammenfassend hat jede Instanz eine Datenbankpoolgröße von 5. Dies bedeutet auch, dass die Einstellung für die Größe des Datenbankpools nicht app-weit, sondern pro Prozess / Instanz ist. Das bedeutet auch, dass Sidekiq und Unicorn in einer eigenen Instanz laufen werden. Es wird eine eigene Datenbankpoolgröße von 5 haben. Ist diese Annahme korrekt?
An dieser Stelle kann ich davon ausgehen, dass die Standard-Poolgröße von 5 im Allgemeinen sicher ist. Deine Gedanken?
PS. Wenn Sie Ihre Poolgröße für Ihre AWS RDS-Instanzen freigeben können. Das wäre willkommen.
Ihre Poolgröße in database.yml sollte nicht kleiner sein als die maximale Anzahl der sidekiq / unicorn-Prozesse (nicht Summe). Beispiel: Wenn ein Unicorn mit 5 Prozessen und Sidekiq mit 15 Concurrency ausgeführt wird, sollten Sie 15 Poolgröße festlegen. Oder, wenn Unicorn mit 7 und Sidekiq mit 5, Sie 7 Verbindungen in database.yml benötigen.
Tags und Links database ruby-on-rails postgresql ruby-on-rails-4