Como eu escolho um valor max_children apropriado para o Sphinx?

1

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:

  • Estou certo em pensar que a baixa CPU sugere que max_children poderia / deveria ser maior que 30?
  • Como posso encontrar o número ideal (ou seja, o número máximo de filhos que [geralmente] não leva à lentidão da consulta)? Não tenho certeza do tipo de informação que o Sphinx registra além de 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>
por Arkaaito 12.03.2014 / 21:06

0 respostas