Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ronaldo_rails

Várias requisições ao mesmo tempo

Recommended Posts

Boa tarde pessoal.

Sou iniciante no rails.

Eu tenho uma simples aplicação webservices que está aceitando SOMENTE 1(uma) solicitação(requisição) por vez.
Estou executando `rails s` em desenvolvimento e gostaria de realizar um teste com varias máquinas (+ ou - 10 pcs) acessando esse meu serviço ao mesmo tempo.

Segue um exemplo do problema:

A PESSOA_01 acessa localhost:3000/app/method_name
A PESSOA_02 acessa localhost:3000/app/method_name
A PESSOA_03 acessa localhost:3000/app/method_name

Nesse caso de acesso simultâneo, a PESSOA_03 só ira receber o resultado após a PESSOA_01 e PESSOA_02 (nessa ordem) já tiverem recebidos.
Aparentemente as requisições entrão em uma espécie de fila onde são executadas uma a uma.

A execução da aplicação está errada `rails s`? Oque pode ser?
Qual a melhor maneira de contornar esse problema ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em produção você pode usar um servidor mais robusto, como o Unicorn. Não se esqueça de que o servidor do banco de dados também pode bloquear a concorrência.

 

Instale o unicorn, adicionando no Gemfile:

gem 'unicorn'

e depois no terminal

bundle install

Agora você configurar a concorrência, no arquivo config/unicorn.rb
 
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
 
before_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end
 
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end
 
after_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  end
 
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end
 
No exemplo acima há 3 processos simultaneos.
 
você pode executar com:

unicorn_rails -c config/unicorn.rb

Tutorial completo no heroku:

https://devcenter.heroku.com/articles/rails-unicorn

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.