Processos de rack assumindo CPU sob Passenger

1

Eu tenho um site do Spree executando a seguinte pilha:

  • Nginx 1.0.8
  • Passenger 3.0.9
  • Ruby 1.9.2-p290
  • Rack 1.3.6
  • Rails 3.1.4
  • Spree 0.70.5

Eu recentemente atualizei do Spree 0.70.3, que também trouxe uma atualização de Deface de 0.7.x para 0.8.0. Desde então, as coisas têm sido muito instáveis.

Recentemente, vimos alguns processos que sobrecarregam a CPU , que sobrecarregam o servidor e fazem a coisa toda uma parada. Eles são processos do Rack e parece que o Passenger está começando eles; Eles são de propriedade do usuário site-runner , um usuário sem privilégios que possui o código do aplicativo. (O Passenger automaticamente executa o código do site como o usuário que o possui). Se eu reiniciar o Nginx e eliminar os processos de fuga, isso ajudará por um tempo, mas eventualmente processos similares retornam e atrapalham as coisas novamente.

ETA: Estou vendo agora passenger-status e passenger-memory-stats , o que sugere que esses são processos de aplicativos do Passenger. Se está correndo ou pendurado, deve haver um problema com meu aplicativo.

Qual é a minha melhor opção para descobrir onde isso está acontecendo?

    
por pjmorse 20.03.2012 / 17:30

1 resposta

1

Processos em rack são os servidores de aplicativos que executam o código do seu site, não o Passenger. Eu suspeitaria de problemas com as atualizações recentes e toda a solução de problemas usual em torno disso. Veja como é uma solicitação no seu sistema.

user -> nginx -> passenger -> Rack process -> generates page

Seu sistema terá vários processos do Rack, porque cada um deles é de encadeamento único e só pode manipular um pedido de cada vez. O trabalho do passageiro é fazer solicitações de proxy e enviá-las para os processos do Rack e iniciar / parar / reciclar os processos do Rack conforme necessário. Geralmente, um processo do Rack leva de 5 a 45 segundos para ser iniciado, dependendo da complexidade do seu aplicativo, de modo que você normalmente terá algumas execuções mesmo quando não atende a solicitações.

    
por 20.03.2012 / 19:00