/ / Preloader per applicazioni Phusion Passenger per Rails - ruby-on-rails, postgresql, redis, memcached, passenger

Preloader per app Phusion Passenger per Rails - ruby-on-rails, postgresql, redis, memcached, passenger

Recentemente ho passato a usare Phusion Passenger 4.0,50 in sostituzione di Unicorn. Il motivo è che Passenger si integra bene con Nginx e può anche alimentare l'app Node.js. Tuttavia, quello che mi chiedo è se dovessi fare qualcosa sulle connessioni esterne (con Postgresql, Redis, Memcached) come ho fatto con Unicorn.

Ho trovato un codice sul git del passeggero come questo. Ma questo codice sembra appartenere a Passenger piuttosto che a un'app Rails.

A partire da ora sto usando Ruby 2.1.2 e Rails 4.1.6. È ancora necessario un tale lavoro per gestire le connessioni esterne? Se lo è, come dovrei farlo?

Grazie.

Aggiornare:

Per questo filo, sembra che il normale ActiveRecord sia preso in carico automaticamente da Passenger.

risposte:

4 per risposta № 1

Autore di Phusion Passenger qui. Sì, devi fare qualcosa per le connessioni esterne. Il concetto di "smart spawning" in Phusion Passenger è esattamente lo stesso del concetto "preload_app on" in Unicorn. Abbiamo un'intera sezione nella documentazione che spiega come funziona e quali sono gli avvertimenti (in particolare, sulle connessioni esterne): https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#spawning_methods_explained

L'unica eccezione è la connessione ActiveRecord predefinita di Rails. Lo ristabiliamo automaticamente perché conta oltre il 90% dei casi d'uso.


1 per risposta № 2

Il passeggero inizia più lavoratori separatiprocessi, ognuno dei quali carica l'applicazione rotaie. Quindi ogni richiesta web viene gestita da un processo completamente isolato all'interno di un thread. Ciò significa che non ti devi preoccupare dei pool di connessione, ad esempio, nel caso di ActiveRecord, ci sono 5 connessioni simultanee possibili per impostazione predefinita (può essere regolata) e nel tuo caso hai sempre una sola connessione (per processo)