2013-03-27 9 views
6

Używam szyn 3.2 + jednorożec + postgres DB i mam pytanie - jak jednorożec obsługuje połączenia DB?Jednorożec nie zamykaj połączeń DB

Jak rozumiem:

  1. jednorożec widły X procesu potomnego procesu głównego.
  2. każda konfiguracja procesu potomnego Połączenie DB - zamknij w before_fork, ustanów połączenie w after_fork.
  3. używamy połączenia na proces (jeśli używamy szyn połączeń DB, tworzymy Y (z database.yml) Połączenia DB na proces) - tzn. Jeśli proces działa (zawsze działa dopóki go nie zabijemy) utrzymujemy połączenie otwarte i każde żądanie internetowe korzysta z tego samego połączenia (które zostało otwarte w after_fork).
  4. otwarte połączenia będą wyświetlane w postgresie (lub dowolnym innym DB) jako nieaktywne lub aktywne.

Czy to prawda, czy coś przeoczyłem?

Odpowiedz

8

Tak, masz rację. Jeśli ustawisz "worker_processes 5" w pliku unicorn.conf, a "pool: 4" w database.yml, utworzymy d 20 połączeń z bazą danych.

3

Napisałem do Erica Wonga, że ​​jest założycielem klejnotu jednorożca, potwierdził, że to prawda.