Si tenemos un servidor linux ( en este caso en concreto, Debian ) , que no parece que lleve el rendimiento que debería, y el servidor recibe muchas peticiones o tráfico, puede que estemos ante un caso de colapso de conexiones simultaneas permitidas en linux.
En este caso aparecerán mensajes en el /var/log/syslog de este estilo: nf_conntrack: table full, dropping packet.
Si ves estos mensajes quiere decir que el kernel está rechazando peticiones por tener la tabla de sockets llena. La solución es la siguiente.
Paraejecutar los comandos debes tener permisos de root. Lo primero será mirar si realmente se está sobrepasando el número de las conexiones permitidas. Para ello iremos al siguiente archivo ( recuerda que estamos en Debian, podría variar si tu distribución es distinta )
cat /proc/sys/net/netfilter/nf_conntrack_count
Al poner esto nos saldrá un número con la cantidad de conexiones que tenemos en ese momento. Si vuelves ha ejecutar el comando seguramente te saldrán mas o menos conexiones, ya que es en tiempo real.
Luego miraremos las conexiones permitidas actualmente por el sistema con el siguiente comando.
cat /proc/sys/net/netfilter/nf_conntrack_max
Si vemos que el número se acerca al número del comando o directamente es el mismo número sabremos que estamos llegando al total de conexiones permitidas
Para que esto no ocurra aumentaremos las conexiones permitidas con el siguiente comando. En este caso pondremos el doble de conexiones. Pero si piensas que no es necesario cambia el número por el que tu prefieras. Recuerda que tienes que tener permisos de root.
sysctl -w net.netfilter.nf_conntrack_max=131072
Con esto cambiaremos la configuración, pero en el próximo reinicio se perderá, así que para que sea persistente iremos al fichero /etc/sysctl.conf y le añadiremos esta línea net.netfilter.nf_conntrack_max=131072 al final del fichero.
El comando para hacerlo es el siguiente:
echo 'net.netfilter.nf_conntrack_max=131072' >> /etc/sysctl.conf
En algunos sitios dicen que no es bueno tocar esta configuración porque puede crear inestabilidad en el sistema, pero depende para que, a veces es necesario. En los casos que he tenido que usarlo no he tenido ningún tipo de problema. Puede que haya casos en los que se debería evitar. Pero todo depende de la necesidad de cada uno.