Pregunta

Estoy configurando un servidor web Apache2 que ejecuta múltiples aplicaciones web Ruby on Rails con Phusion Passenger. Sé que Passenger genera procesos de Ruby para manejar solicitudes. Tengo las siguientes preguntas:

  • Si se debe manejar más de una solicitud al mismo tiempo, ¿Pasajero generará múltiples procesos o múltiples hilos (Ruby)? ¿Cómo lo configuro para que siempre genere procesos de subproceso único?
  • Si tengo dos aplicaciones Rails, imagine que una solicitud de aplicación A va al proceso 1, luego llega la solicitud de aplicación B. ¿Es posible que el proceso 1 maneje esta solicitud también? ¿Cuándo y cómo es esto posible? En otras palabras, ¿se permite un proceso para manejar solicitudes de múltiples aplicaciones Rails?
  • Tengo la misma aplicación Rails exportada en múltiples URL y múltiples hosts virtuales (como http: // y https: //). ¿El mismo proceso podrá servir diferentes hosts virtuales? (La respuesta a esto parece ser sí, establecí una variable global al responder una solicitud al host virtual A, y pude recuperar el valor en el host virtual B.)
¿Fue útil?

Solución

En términos generales, Passenger genera nuevos procesos al bifurcar un ApplicationSpawner, que tiene el marco y el código de la aplicación precargados en la memoria, o un FrameworkSpawner, que solo tiene el código del marco.

Pasajero, que yo sepa, no se ocupa de hilos. En cambio, a medida que aumenta la carga en una aplicación, bifurcará el ApplicationSpawner de esa aplicación e inicializará otra instancia. Cuando la carga disminuye, se eliminan una o más instancias de la aplicación.

Si Passenger está configurado de cierta manera (creo que al elegir el método de generación inteligente), creará un FrameworkSpawner, que carga el código de los rieles, pero no el código de la aplicación, que luego se puede bifurcar para cargar y aplicación que usa esa versión de Rails.

Entonces para responder a sus preguntas:

  • Los servirá secuencialmente, luego generará procesos adicionales si decide que la carga es lo suficientemente alta.

  • No. Un proceso solo puede pertenecer a una sola aplicación Rails.

  • Estoy un poco incompleto en este caso, pero su experimento tiene sentido. Passenger debe ser lo suficientemente inteligente como para darse cuenta de que, aunque se ejecuta desde diferentes lugares en la configuración del servidor, está hablando de la misma aplicación. Probablemente se basa en la ruta del sistema de archivos de la aplicación.

EDITAR: Fui y leí un poco sobre esto. Resulta que en su mayoría tenía razón, pero los detalles técnicos estaban un poco fuera de lugar. Consulte el Documentación del pasajero

Otros consejos

Sí, Burke tiene razón. En el caso de la tercera pregunta, Phusion Passenger reconoce las aplicaciones por su ruta raíz de aplicación. Entonces, incluso si tiene dos hosts virtuales, si ambos apuntan al mismo DocumentRoot, Phusion Passenger pensará que son la misma aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top