Temos uma instalação do Sphinx (2.0.3) em execução em um cluster de 3 instâncias do EC2 (atualmente m3.large).
Atualmente, temos workers = threads
e max_children = 30
em nossa configuração do Sphinx (o mesmo em cada caixa). Estamos recebendo periodicamente o temido "erro temporário do searchd: o servidor está no máximo, tente novamente em um segundo". Nossas instâncias estão em torno de 5% da utilização da CPU. Alguns exemplos de saída principal:
top - 19:51:56 up 22:15, 1 user, load average: 0.08, 0.04, 0.01
Tasks: 82 total, 2 running, 80 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.0%us, 0.0%sy, 0.0%ni, 98.5%id, 0.3%wa, 0.0%hi, 0.0%si, 0.2%st
Mem: 7872040k total, 2911920k used, 4960120k free, 245168k buffers
Swap: 0k total, 0k used, 0k free, 2190992k cached
Tudo o que o documento do Sphinx parece dizer sobre a configuração max_children é que ele é "útil para carga do servidor de controle ". Enquanto pesquisava, encontrei uma postagem no fórum indicando que a configuração muito alta ou muito baixa pode causar "servidor maximizado" - presumo que a primeira seja porque as consultas individuais estão com fome - mas não tinha mais dicas escolhendo o nível certo. (Eu não consigo encontrar o link para este post novamente para salvar minha vida. Desculpe.)
Duas perguntas relacionadas:
query.log
. Existe uma ferramenta que eu possa usar para determinar se a lentidão da consulta está ocorrendo (devido a muitas consultas paralelas) e, se não, as consultas estão ligadas à CPU ou à memória (ou devo estar olhando para algum outro valor completamente)? / li>
Tags sphinxsearch