Cache do servidor DNS (bind9.2) O uso da CPU é tão alto

3

Eu tenho um servidor de DNS apenas de cache que recebe ~ 3k consultas por segundo. Aqui está as especificações:

Xeon dual-core 2,8GHz 4GB of RAM
Centos 5x (kernel 2.6.18-164.15.1.el5PAE) 
bind 9.4.2

status do rndc: clientes recursivos: 666/4900/5000

Cerca de 300 novas consultas (não em cache) por segundo.

O Bind sempre usa 100% em um núcleo na configuração de thread único. Depois de recompilá-lo para multi-thread, ele usa quase 200% em dois núcleos :( Não iowait, apenas sys e usuário. Eu procurei por aí, mas não vi nenhuma informação sobre como usar bind CPU. Por que se tornar gargalo? / p>

Mais uma coisa, aqui está o uso da RAM:

cat /proc/meminfo 
MemTotal:      4147876 kB
MemFree:       1863972 kB
Buffers:        143632 kB
Cached:         372792 kB
SwapCached:          0 kB
Active:        1916804 kB
Inactive:       276056 kB

Eu configurei max-cache-size para 0 para garantir que o bind possa usar o máximo de RAM que quiser, mas sempre para ~ 2GB. Desde que a cada segundo nós não obtivemos consultas armazenadas em cache, teoricamente a RAM deve estar esgotada, mas não foi.

Você tem alguma ideia?

TIA,

-Gk

    
por Gk. 20.04.2010 / 18:26

4 respostas

2

Qual versão do BIND você está usando? Versões anteriores ao Bind 9.5 têm problemas de escalabilidade conhecidos com cargas altas, consulte link .

Além disso:

  • nunca defina o tamanho do cache max para 0, a menos que você queira abrir seu servidor para DoS
  • o tamanho máximo do seu cache sempre é vinculado aos TTLs dos registros reais

Eu recomendo que você realize um teste secundário com o dnscache de dnscache , leva 10 minutos para instalar, é extremamente simples ajustar e manter, e tem um desempenho previsível.

    
por 26.05.2012 / 01:45
0

Problema interessante ... Nunca vi bind usar 100% da CPU, mas a pesquisa rápida resultou em um muito página interessante que pode ajudá-lo a corrigir o problema ... Deixe-me saber como é. Estou interessado em saber o resultado.

    
por 20.04.2010 / 18:31
0

3k qps para um servidor dessa classe é um volume relativamente baixo em termos de E / S brutos e largura de banda de memória - eu esperaria poder chegar mais perto de 20k se fosse um servidor autoritativo.

Dito isto, o BIND 9.4.2 é antigo . Se você pode fazer o seu próprio rolo ou usar RPMs não-RHEL, você deve tentar o BIND 9.7.x e ver se isso resolve seus problemas de desempenho.

Além disso, para usar mais de 2 GB de RAM, você precisa estar executando x64 no modo de 64 bits em vez de x86.

    
por 23.04.2010 / 14:56
0

Você provavelmente terá um desempenho muito melhor com Não consolidado . Se você estiver usando o BIND apenas como um servidor recursivo de armazenamento em cache sem nada especial na configuração, a mudança para o Unbound será realmente fácil.

    
por 04.08.2011 / 10:14