Regularmente experimentamos problemas extraños con las redes en nuestro servidor dedicado. Ejecuta Windows Server 2012 R2 x64 en Xeon E5620 con 16 GB de RAM e adaptador de red Intel 82575EB.
Tenga en cuenta que ya hemos ajustado HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
los valores clave TcpTimedWaitDelay
y MaxUserPort
30 y 65530 respectivamente.
En un momento aleatorio, nuestros sitios web dejan de responder, ya que no pueden conectarse a una base de datos local. Es aproximadamente 2 semanas de tiempo de actividad cuando estos problemas comienzan a tener lugar. El registro del sistema comienza a recibir advertencias TCPIP 4227 y 4231. Indica "Una solicitud para asignar un número de puerto efímero desde el espacio de puerto TCP global ha fallado debido a que todos estos puertos están en uso".
Si corro
Get-Counter -Counter \TCPv4\*
o
Get-Counter -Counter \TCPv6\*
o
netstat -abn | find /c ":"
Siempre obtengo un valor razonable de 500-1500 conexiones, que ni siquiera está cerca del límite de 65K.
Además, "localhost" deja de resolverse en :: 1 localmente, volviendo a 127.0.0.1
Solo un reinicio forzado de la máquina puede resolver la situación.
¿Podría ser un problema de adaptador de red?
ACTUALIZACIÓN 1
Sucedió de nuevo y parecía haberse resuelto cuando reinicié el servidor de correo. Aunque extraño, todos los contadores mostraron ~ 1000 conexiones con ~ 500 activas en este momento, y aún el error de socket 10055 al intentar conectarse a la base de datos que no tiene nada que ver con el servidor de correo.
ACTUALIZACIÓN 2 Esto ES extraño, pero el reinicio diario de los servicios de correo soluciona el problema por completo.
fuente
Respuestas:
He tenido un problema similar con el conjunto agotado de puertos TCP / IP en WinSvr 2012R2 x64 durante casi 1 mes, donde el servidor dejó de recibir conexiones nuevas y TCP. Así que jugué con los valores del registro y estos son estables para mí:
En resultado igual que el tuyo. Creo que debería considerar auditar su comportamiento del rendimiento de sus aplicaciones / scripts. Si todo está bien y nada ayuda, puede intentar colocar el servidor proxy antes que el servidor de aplicaciones web, hacer 2 nodos con el servidor web (IIS, Apache, ...) que compartirán el mismo contenido estático y accederán a la misma base de datos al mismo tiempo tiempo (si tiene suficientes recursos en su empresa).
Quizás este artículo te ayude de alguna manera: http://blogs.technet.com/b/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it- s-important.aspx
fuente
MaxUserPort
aún funciona en 2012? Pensé que en 2012 debes hacerlo a través de netsh. por ejemplo:netsh int ipv4 set dynamicport tcp start=25535 num=40000
Además de la configuración del controlador Tcpip, el rango de puerto TCP efímero se administra en Windows Server utilizando el comando netsh ( fuente ).
Puede ver el rango dinámico de puertos con los siguientes comandos:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
Para cambiar el rango de puertos, use este comando:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
Por ejemplo:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
La configuración (inicio = 49152 num = 16384 ) también es la predeterminada en Windows Server 2008 en adelante.
fuente
Tuve este mismo problema en Windows Server 2016 ejecutando grandes cantidades de pruebas de Selenium con chromewebdriver. Este script PS configurará automáticamente la configuración que @Myke compartió anteriormente. El
shutdown
comando se agregó porque se requiere un reinicio para los cambios de la pila TCP.Aumente el tamaño de la agrupación para puertos TCP efímeros
Este fue el mensaje de error que recibimos al
Webdriver.Quit()
decirnos que una dirección TCP estaba en uso.fuente
¿Se ha asegurado de que no está perdiendo objetos de conexión de base de datos? Debe cerrar cada conexión de base de datos que se abra, ya sea explícitamente (con try-finally) o con un bloque using {}. Este es un problema común que ASP no le informará directamente.
fuente