La solución de problemas de una red lenta o caídas de paquetes de red puede ser complicada. Además de una comunicación de red más lenta, es posible que se observen síntomas adicionales, como:
- Los intentos de conectarse a un servidor con ssh y/o sftp dan como resultado tiempos de espera o una respuesta retrasada.
- Cuando la carga de la red aumenta, se observa una gran cantidad de retransmisiones de la red.
- Es posible que se vea una gran cantidad de caídas de paquetes en la salida del comando "ifconfig eth[x]".
Algunos otros síntomas también incluyen:
– La salida del comando:netstat -s muestra valores crecientes para las siguientes estadísticas :(ejecutar varias veces ‘netstat -s’):
13336 packets pruned from receive queue because of socket buffer overrun 516 times the listen queue of a socket overflowed 516 SYNs to LISTEN sockets ignored 2040077 packets collapsed in receive queue due to low socket buffer TCPBacklogDrop: 744165
– La salida del comando:ethtool -S eth[x] muestra valores crecientes contra el contador:“rx_fw_discards”:
rx_fw_discards: 4493
Causas de un rendimiento de red más lento
Puede haber múltiples razones para un rendimiento de red más lento. Pero algunas de las posibles causas son:
- La red ya está muy cargada, hasta su capacidad máxima y hay congestión.
- Los búferes de recepción configurados no son suficientes para la carga de la red.
- Hay caídas de paquetes debido a errores en la capa física.
Resolución de problemas de rendimiento lento de la red
1. Verifique el rendimiento de la red con la herramienta iperf y determine si la utilización del ancho de banda de la red se acerca al rendimiento máximo observado.
Cómo usar Iperf para probar el rendimiento de la red en Linux2. Establezca los valores de los parámetros de la red de forma adecuada para admitir el máximo rendimiento de la red. Encuentre el valor del producto de retardo de ancho de banda (BDP) y establezca el tamaño del búfer de red en consecuencia. Se calcula como el producto del ancho de banda del enlace y el tiempo de ida y vuelta.
Por ejemplo:
– Para una red de 1 Gb/s y un tiempo de viaje de ida y vuelta de 0,1 s, el BDP=(0,1 * 10^9)/8. En dicha red, establezca los siguientes valores de parámetros en el archivo:/etc/sysctl.conf
# vi /etc/sysctl.conf net.core.rmem_max = 12500000 net.core.wmem_max = 12500000 net.ipv4.tcp_rmem = 4096 87380 12500000 net.ipv4.tcp_wmem = 4096 65536 12500000
Y aumente también los siguientes parámetros:
# vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096
Y luego ejecute el comando:
# sysctl -p
a) Para ambos cambios no es necesario reiniciar el sistema.
b) Publique este cambio, es necesario monitorear la salida del comando "netstat -s" y verificar si los siguientes contadores siguen aumentando:
packets pruned from receive queue because of socket buffer overrun times the listen queue of a socket overflowed SYNs to LISTEN sockets ignored packets collapsed in receive queue due to low socket buffer TCPBacklogDrop
3. Aumente el tamaño del búfer del anillo RX de la NIC. Hay una compensación al establecer este número. Un valor mayor podría retrasar el procesamiento de los paquetes y un valor más bajo podría provocar caídas de paquetes cuando el controlador correspondiente encuentre un retraso en el procesamiento de los paquetes entrantes.
a) En general, comience duplicando el tamaño del anillo RX y controle la salida del comando "ethtool -S eth[x]".
# ethtool -G eth[x] rx 512
b) Para que este cambio sea permanente, agregue lo siguiente al archivo:/etc/sysconfig/network-scripts/ifcfg-eth[x] :
# vi /etc/sysconfig/network-scripts/ifcfg-eth[x] ETHTOOL_OPTS="-G rx 512"