Tomcat7 / Solr travando sob carga 'instantânea'?

1

Sou novo no solr e carrego a nossa configuração para ver o que podemos suportar. Estou usando o solrmeter e meu problema é um pouco estranho:

  • Quando configuro o solrmeter para executar 8000 consultas / min, ele manipulará algumas centenas de consultas e, em seguida, o tomcat deixará de responder completamente às solicitações (mesmo que de acordo com lsof -i ainda esteja ouvindo e o processo java ainda esteja em execução) .
  • Quando configuro o solrmeter para executar 1000 consultas / min, ele funciona bem. Eu posso parar o solrímetro depois de alguns minutos e depois rodar 8000 / min sem problemas.

É como se ele precisasse de um tempo de aceleração? Além disso, notei (independentemente do aumento) que minha configuração não pode manipular 12000 / min. A reação a 12k / min é a mesma que se eu corresse 8k / min sem a aceleração. De nota, apenas o fragmento que o solrímetro está apontado para de responder. O outro caco cantarola sem incidentes.

Configuração (tudo na AWS):

  • 2x m1.large (7.5Gb RAM) executando tomcat7 + solr 4.2.0 (open-jdk-7-headless): Ubuntu 12.04
  • 1x m1.micro executando o zookeeper 3.4.5: Ubuntu 12.04

A grande maioria da minha configuração de solr / tomcat7 é o padrão do exemplo de pacotes / solr do ubuntu. Aqui estão as configurações e o final do arquivo catalina.out: link

Eu redirecionei o console do solrímetro (stderr e stdout) para um arquivo. É um grande log (67Mb): link

Minha pergunta principal é dupla:

  1. Esse comportamento normal para o tomcat (para simplesmente parar de responder completamente) quando fica sobrecarregado? E a única opção é reiniciá-lo?
  2. Por que ele lida melhor quando eu der um número menor de consultas e, em seguida, aumentá-lo? Preocupa-me que, se eu tiver que reiniciar um servidor no cluster e ele for lançado no pool de máquinas, as coisas explodirão.
por natefox 22.03.2013 / 20:14

2 respostas

0

A solução para isso acabou sendo maxThreads no Connector. Aumentar isso para um número muito maior (10000) do que o padrão (200) permitiu que o Solr (e o Tomcat) lidassem com a carga 'instantânea' muito melhor.

    
por 28.03.2013 / 17:52
1

Quando o tomcat está congelado, você pode executar 2-3 dumps de linha com 2-3 minutos de intervalo. Você pode analisá-los e descobrir o que o tomcat está fazendo.

Você pode usar jvisualvm que vem com o JDK para ver se o uso de heap não é alto e também para obter dumps de encadeamento.

    
por 22.03.2013 / 20:26