Como implantar um aplicativo Rails assíncrono e segur

Eu li toneladas de material na web sobre segurança e desempenho de threads em diferentes versões de ruby e trilhos e acho que entendo essas coisas muito bem neste moment

O que parece estranhamente ausente nas discussões é como realmente implantar um aplicativo Rails assíncrono. Ao falar sobre threads e sincronicidade em um aplicativo, há duas coisas que as pessoas desejam otimizar:

utilizando todos os núcleos da CPU com uso mínimo de RAM poder atender a novas solicitações enquanto as solicitações anteriores estão aguardando IO

@Point 1 é onde as pessoas ficam (com razão) empolgadas com o JRuby. Para esta pergunta, estou apenas tentando otimizar o ponto 2.

Diga que este é o único controlador no meu aplicativo:

TheController < ActionController::Base
  def fast
    render :text => "hello"
  end

  def slow
    render :text => User.count.to_s
  end
end

fast não tem IO e pode atender a centenas ou milhares de solicitações por segundo eslow precisa enviar uma solicitação pela rede, aguardar o trabalho ser concluído, receber a resposta pela rede e, portanto, é muito mais lento quefast.

Portanto, uma implantação ideal permitiria centenas de solicitações parafast a ser cumprido enquanto uma solicitação paraslow está aguardando IO.

O que parece estar faltando nas discussões na Web é qual camada da pilha é responsável por ativar essa simultaneidade. fino tem um--threaded flag, que irá "Chamar o aplicativo Rack em threads [experimental]" - isso inicia um novo thread para cada solicitação recebida? Aplicar spool de instâncias de aplicativos em rack em threads que persistem e aguardam solicitações de entrada?

É magro o único caminho ou existem outros? O tempo de execução do ruby é importante para otimizar o ponto 2?

questionAnswers(1)

yourAnswerToTheQuestion