kmem_cache_alloc em net / netfilter / nf_conntrack_core.c nf_conntrack_alloc () retorna NULL. O kernel não conseguiu alocar memória.
Verifique a memória livre (cat / proc / meminfo e slabtop).
O que a mensagem em kernel.log:
nf_conntrack_alloc: Can't alloc conntrack
nf_conntrack_alloc
é decomposto para isso:
nf
- NetFilter - Filtragem IP baseada em kernel geralmente acessada através do iptables
ferramenta de espaço do usuário conntrack
- rastreamento de conexão ou análise de fluxo administrado com conntrack_tools
alloc
- um pedido para "alocar" espaço na memória, neste caso para rastrear uma conexão - o oposto é dealloc
Cannot alloc conntrack
significa que a tentativa de alocar memória para rastrear uma nova conexão de rede falhou. Conexões podem significar muito mais que conexões TCP. ICMP, SIP e UDP podem contar para os seus limites. A edição de junho de 2006 do; login define o acompanhamento de conexões como este:
Basically, the connection tracking system stores information about the state of a connection in a memory structure that contains the source and destination IP addresses, port number pairs, protocol types, state, and timeout. With this extra information, we can define more intelligent filtering policies.
Cada nova conexão é direcionada a uma tabela de controle de conexões que possui um número limitado de entradas. Se e quando essa tabela de conexão for preenchida, a entrada mais antiga será eliminada. Isso significa que as conexões antigas podem se desconectar de repente se muitas conexões forem estabelecidas.
Há um ajuste do sistema chamado nf_conntrack_max
, que é padronizado como 32767, se eu tiver lido corretamente. Você pode ajustar isso para um número maior, como 65535 de acordo com esta página aqui em serverfault.com . ( sysctl -w net.netfilter.nf_conntrack_max=65535
) Veja a lista de valores em /proc/sys/net/netfilter
.
Dito isso, um artigo de Paul Roberts afirma que se a tabela estiver realmente cheia, você deverá ver a mensagem nf_conntrack: table full, dropping packet
. Então, dado isso, você pode realmente ter um sistema com muita memória alocada para outras coisas, e o rastreamento de conexão está sentindo o peso da falta. Considere encerrar um serviço ou aumentar a RAM. Se você estiver em um cenário de memória limitada, talvez seja necessário examinar a remoção de símbolos e outros truques para obter mais memória disponível para você.