Pergunta

Isso também pode pertencer ao ServerFault. É uma espécie de combinação entre a configuração do servidor e o código (eu acho)

Aqui está minha configuração:

Rails 2.3.5 app running on jruby 1.3.1
Service Oriented backend over JMS with activeMQ 5.3 and mule 2.2.1
Tomcat 5.5 with opts: "-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled"
Java jdk 1.5.0_19
Debian Etch 4.0

Corrida top, toda vez que clico em um link no meu site, vejo meu java Processe Spike de uso da CPU. Se for uma página pequena, às vezes é apenas 10% de uso, mas às vezes em uma página mais complicada, minha CPU sobe para 44% (nunca acima, sem saber o porquê). Nesse caso, uma solicitação pode levar mais de minutos enquanto meu servidor load average Suba constantemente até 8 ou mais. Isso é apenas ao clicar em um link que carrega algumas solicitações de alguns serviços, nada muito complicado. A memória do processo Java paira em torno de 20% na maioria das vezes.

Se eu deixar um pouco, a média de carga volta a nada. Clicando em mais alguns links, sobe de volta.

Estou executando uma pequena instância da Amazon para o Frontend do Rails e uma grande instância para todos os serviços.

Agora, isso é obviamente inaceitável. Um único usuário pode levar o pico da média de carga para 8 e, com duas pessoas usando -a, mantém essa média de carga durante o uso do site. Estou me perguntando o que posso fazer para inspecionar o que está acontecendo? Estou com uma perda completa de como posso depurar isso. (Isso não acontece localmente quando eu corro o aplicativo Rails através de Jruby, não dentro do contêiner Tomcat)

Alguém pode me esclarecer sobre como eu posso inspecionar meu aplicativo Jruby para descobrir como ele poderia estar usando recursos tão grandes?

Observe que notei isso um pouco antes, aparentemente aleatoriamente, mas agora, depois de atualizar do Rails 2.2.2 para 2.3.5, estou vendo isso o tempo todo e isso torna o site completamente inutilizável.

Quaisquer dicas sobre onde procurar são muito apreciadas. Eu nem sei por onde começar.

Nenhuma solução correta

Outras dicas

Certifique -se de que não haja comunicação inesperada entre o tomcat e outra coisa. Eu iria verificar em primeiro lugar se:

  • O corretor ActiveMQ não se comunica com os outros corretores da sua rede. Por padrão, o corretor AMQ inicia no modo de descoberta automática OpenWire.
  • JGroups/multicasts em geral não se comunicam com algo em sua rede.

Essa carga desnecessária pode resultar do processamento das mensagens provenientes de outro aplicativo.

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