Pergunta

Estou configurando um servidor web Apache2 executar várias aplicações web Ruby on Rails com Phusion Passenger. Sei que gera passageiros Rubi processos para o tratamento dos pedidos. Eu tenho as seguintes perguntas:

  • Se mais de um pedido tem de ser tratado ao mesmo tempo, a vontade de passageiros desova vários processos ou vários segmentos (rubi)? Como faço para configurá-lo para que ele sempre gera processos single-threaded?
  • Se eu tiver duas aplicações Rails, imagine que um pedido de aplicação A vai para processar 1, e depois pedir para aplicativo B chega. É possível que o processo 1 vai lidar com este pedido, bem como? Quando e como isso é possível? Em outras palavras, é um processo permitiu aos pedidos punho para aplicações múltiplas Rails?
  • Eu tenho a mesma aplicação Rails exportados em vários URLs e vários hosts virtuais (como http: // e https: //). Será que o mesmo processo de ser capaz de servir diferentes hosts virtuais? (A resposta a esta parece ser sim, eu definir uma variável global em responder a um pedido de host virtual A, e eu era capaz de recuperar o valor no host B virtual.)
Foi útil?

Solução

De um modo geral, desova de passageiros novos processos por bifurcação um ApplicationSpawner, que tem a estrutura eo código do aplicativo pré-carregado na memória, ou um FrameworkSpawner, que apenas tem o código do framework.

Passageiros, tanto quanto eu sei, não lida com tópicos. Em vez disso, como a carga aumenta em um aplicativo, ele vai desembolsar ApplicationSpawner dessa aplicação e inicializar outra instância. Quando a carga diminui, uma ou mais instâncias do aplicativo são eliminadas.

Se o passageiro estiver configurado de uma certa maneira (eu acredito, escolhendo o método de desova "inteligente"), ele irá criar um FrameworkSpawner, que carrega o código do Rails, mas nenhum código do aplicativo, que pode então ser bifurcada para carga e da aplicação usando essa versão do Rails.

Assim, para responder às suas perguntas:

  • Ele irá atendê-los sequencialmente, processos adicionais depois de desova se decidir a carga é alta o suficiente.

  • No. Um processo só pode pertencer a uma única aplicação Rails.

  • Eu sou o tipo de esboçado em um presente, mas sua experiência faz sentido. Passageiros deve ser inteligente o suficiente para descobrir que mesmo que ele está sendo executado a partir de diferentes lugares do configuração do servidor, você está falando sobre a mesma aplicação. É provavelmente baseado em filesystem do aplicativo.

EDIT: Eu fui e ler sobre isso um pouco. Acontece que eu estava mais do que certo, mas os detalhes técnicos foram um pouco fora. Veja a documentação Passageiros

Outras dicas

Sim, Burke está certo. No caso da terceira questão, Phusion Passenger reconhece aplicativos por seu caminho raiz do aplicativo. Assim, mesmo se você tiver dois hosts virtuais, se ambos apontam para o mesmo DocumentRoot então Phusion Passenger vai pensar que eles são o mesmo aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top