Lucene Solr - Vários núcleos versus várias instâncias para diferentes documentos de esquema

1

Tenho preocupações com desempenho e queria sugestões que funcionassem melhor para Multi Core ou Multi Instance(with different port) ?

Meu caso primeiro:

  • Currently I am running Solr with multiple cores and its running OK. There is only one issue that sometime it throws "out of heap memory while processing facets fields", after which I have to restart the solr. ( To minimize the no. of restarts, I starts the Solr with high memory : java -Xms1000M -Xmx8000M -jar start.jar )

  • I have amazon EC2 instance with 8core-2.8GHtz /15GB Ram with optimized hard disk.

  • I have many database-tables(about 100) and have to create different schemas for each(leads to create different core).

  • Each table has millions of documents, with 7-9 indexed fields and 10-50 stored fields per document.

  • My web portals should handle very high traffic (currently I m having 10 request/second, may increase to 50-100/second). I know 'Solr' can handle that but it is just to inform you that I am concerned about every-smallest performance issue

  • Searching Solr by PHP and CURL in to specific core, so there is no problem of searching on different Solr instance also.

Pergunta:

Conforme meu conhecimento, Solr trata de uma solicitação por vez . Então eu acho que se eu criar várias instâncias do solr e iniciar aquelas em portas diferentes, então meu portal da web pode lidar com mais solicitações de cada vez. (se o usuário pesquisar na tabela diferente).

Então, o que você vai me sugerir? Multi Core em Instância Única Solr? ou várias instâncias com single / dual core em cada?

Existe algum problema em ter várias instâncias do Solr sendo executadas em portas diferentes?

OBSERVAÇÃO: Aqui, eu posso / talvez / combinar o (s) núcleo (s) / small-core menos procurado em uma instância AND tráfego pesado -core (s) em instância separada OR two-three-heavy-traffic-core em uma instância etc. Coz , criando instâncias diferentes para cada tabela (~ 100 aqui ) terá muito recursos de hardware.

    
por Adarsh Rajput 20.03.2015 / 08:14

1 resposta

0

Solr can handle multiple requests at a time.

Eu testei-o executando uma longa consulta [qTime = 7203, aprox. 7sec] e várias consultas pequenas - depois do longo [qTime = 30], o Solr responde primeiro por consultas menores, mesmo que elas sejam executadas após a consulta longa.

Esse ponto dá muitas razões para responder: Use uma única instância de solr com vários núcleos. Apenas atribua memória alta à JVM.

Outros pontos:

1. Cada instância do solr exigirá RAM, portanto, a execução de várias instâncias exigirá mais recursos, o que será caro. E se você estiver usando facets , sort fields , precisará alocar mais RAM para cada instância.

Como você pode ver no meu caso eu preciso iniciar o solr com memória alta (8GB). Você pode ver um caso de arquivo da Web em dinamarquês , que usa várias instâncias e alocou 9 GB de RAM para cada um com 256 GB total de RAM.

2. Você pode executar várias instâncias de solr em diferentes PORTAS usando o comando java -Djetty.port=8984 -jar start.jar . Tudo correu bem, mas eu tenho um problema.

Embora a indexação possa dar "erro de memória insuficiente" , a instância solr será eliminada. Portanto, você precisa iniciar a segunda instância com memória alta, o que levará a mais requisitos de RAM.

3. Requisito de recursos e problemas de desempenho do Solr pode ser entendido aqui . De acordo com este ambiente de 64 bits e 12 GB de RAM é recomendado para um bom desempenho. Solr Optimization são explicados aqui .

    
por 27.03.2015 / 12:39

Tags