Files
wiki-data/tecnica/varios/linux/nf_conntrack_max.md

1.4 KiB

Cálculo del nf_conntrack_max

Para saber si los parámetros que tenemos para el Connection Tracking son los óptimos, se usa la siguiente fórmula:

CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (xArq / 32)

donde xArq será 64 o 32 según la arquitectura del servidor. De esta forma, si la arquitectura es de 64bits (64/32 = 2) ó 32bits (32/32 =1) según el caso.

Por ejemplo, para saber el número de bytes, podemos ejecutar lo siguiente:

cat /proc/meminfo (MemTotal: 2040168 kB)

Así, con 2GB de RAM (2040168 kB), sobre una arquitectura de x64

# uname -m

La fórmula quedaría así:

CONNTRACK_MAX = (2040168 kB * 1024) / 16384 / (64 / 32) = 63755,25 => 63755

Modificar nf_conntrack_max

De esta manera podemos adaptar este parámetro a nuestro servidor. Podemos modificar este valor «en vivo», simplemente ejecutando:

# echo 63755 > /proc/sys/net/netfilter/nf_conntrack_max

Sin embargo, para que los cambios sean persistentes, debemos añadir la siguiente línea en el /etc/sysctl.conf:

net.netfilter.nf_conntrack_max=63755

Comandos utiles

Conexiones que está gestionando la máquina de forma concurrente

# netstat -nat | wc -l

Para saber la cantidad máxima de transacciones que puede gestionar el conntrack:

cat /proc/sys/net/netfilter/nf_conntrack_max

Para saber la cantidad de transacciones que está gestionando el conntrack:

cat /proc/sys/net/netfilter/nf_conntrack_count