Prefacio
Escribí un subprograma de cliente MQTT en el proyecto para probar el límite superior del número de conexiones de MQTTServer. Después de ejecutar durante un período de tiempo, se informó un error: No se puede asignar la dirección solicitada
Marqué "No se puede asignar la dirección solicitada" en Internet, lo que significa que el sistema Linux no puede continuar asignando puertos al cliente (agotado), por lo que no se puede realizar la conexión del socket del supervisor.
Problema de posicionamiento
1. Ver los puertos disponibles del sistema Linux actual
cat / proc / sys / net / ipv4 / ip_local_port_range
La cantidad de puertos en el sistema actual varía de 20000 a 65534, por lo que la cantidad de puertos que se pueden asignar es 25535. Si mi número de conexiones llega a 25535, se informará del error anterior.
Entonces, ¿cómo ajustar este rango de puertos?
Solución
1. Modificar el rango de puertos
Ejecute: vim /etc/sysctl.conf , agregue el siguiente contenido
# 1000 a 65534 pueden ser usados por programas de usuario, debajo de 1000 son puertos reservados para el sistema net.ipv4.ip_local_port_range = 1000 65534
Ejecutar: sysctl -p
Verifique el rango de puertos nuevamente: cat / proc / sys / net / ipv4 / ip_local_port_range
2. Configure la configuración de reutilización de los puertos tcp para mejorar la eficiencia del reciclaje de puertos
Ejecute: vim /etc/sysctl.conf y agregue el siguiente contenido:
Recuperación de la conexión #TCP
net.ipv4.tcp_max_tw_buckets = 6000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.route.max_size = 5242880
net.ipv4.ip_forward = 1
net.ipv4.tcp_timestamps = 1
Blogger: prueba para ganar dinero
Lema: Centrarse en las pruebas y la automatización, y esforzarse por mejorar la eficiencia de la I + D; a través de las pruebas y la diligencia para completar la acumulación original, a través de la lectura y la gestión financiera hasta la libertad financiera.
csdn: https://blog.csdn.net/ccgshigao
Blog Park: https://www.cnblogs.com/qa-freeroad/