wcf web-services throttling

Error de servicio demasiado ocupado en WCF



web-services throttling (8)

Asegúrate también de verificar la excepción interna; durante nuestras implementaciones, desactivamos el grupo de aplicaciones de un servicio web de WCF y los clientes comienzan a recibir este error durante ese tiempo:

System.ServiceModel.ServerTooBusyException: el servicio HTTP ubicado en https://ourserver.x.com/path/service.svc está demasiado ocupado. ---> System.Net.WebException: el servidor remoto devolvió un error: (503) Servidor no disponible.

Entonces, en este caso, un error HTTP 503 se interpreta (¿mal?) Como "servidor demasiado ocupado".

De forma intermitente obtengo la siguiente excepción en mi servicio .Net WCF. "El servicio HTTP ubicado en http://MyServer/TestWCF/MyService.svc está demasiado ocupado".

¿Me estoy perdiendo de algo?

Estoy utilizando enlace HTTP básico y he habilitado el límite de WCF.

<basicHttpBinding> <binding name="BasicHttpBinding_MyService" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-16" sendTimeout="00:01:00" > <readerQuotas maxStringContentLength="2147483647" maxArrayLength="163840000" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" /> </binding>

. . . .

<behavior name="MyWCFServices.MyServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceThrottling maxConcurrentCalls="16" maxConcurrentInstances="2147483647" maxConcurrentSessions="10"/> </behavior>

¿La aceleración ayudará a resolver el problema? Además, ¿puedo saber los valores de parámetros recomendados para la regulación de un sitio web de alto tráfico?


Definitivamente podría intentar aumentar las maxConcurrentSessions y maxConcurrentCalls en su comportamiento de aceleración del servicio a los valores estándar de 30 y ver si eso hace que el error desaparezca. El servidor demasiado ocupado parece indicar que han ingresado más solicitudes que el área permitida por el comportamiento de aceleración del servicio, y se han descartado porque no se dispuso de ninguna instancia de servicio para darles servicio dentro del período de tiempo de espera dado.


La única fuente de esta excepción que conozco es si está utilizando sesiones y logra presionar el acelerador MaxPendingChannels. Su valor predeterminado es algo muy bajo como 4. Podría intentar configurarlo más alto (128 por ejemplo), o si solo quiere repro, establézcalo en 1 y debería verlo bajo la prueba de carga.

Consulte aquí para obtener más información sobre sesiones: http://msdn.microsoft.com/en-us/library/ms733795.aspx


Me encontré con este error, y se redujo a un problema de configuración simple. Tenía un servicio en el mismo puerto y la misma interfaz (servicio simulado). Ejecuté el servicio con el interruptor de línea de comando apropiado para ejecutar el servicio "original" que pretendía. El error desapareció


Mi respuesta sería, verificar si el grupo de aplicaciones está funcionando bien.

He visto este error que ocurre cuando el grupo de aplicaciones ha muerto debido a las excepciones que se lanzan y que no se detectan.

Considere, por ejemplo, las secciones de configuración personalizadas: si hay un error allí, la aplicación fallará incluso antes de que se inicie. Demasiados de estos en un corto espacio de tiempo matarán al grupo de aplicaciones.


Mi solución sería, compruebe el archivo App.Config, si la etiqueta de servicio está allí para este servicio en particular.

p.ej:

<service name="MyServices.ServiceName"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TestBinding" contract="MyServices.ServiceName"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8732/Design_Time_Addresses/MyServices/ServiceName/" /> </baseAddresses> </host> </service>


No es solo maxConcurrentSessions, sino también cuánto dura la sesión.

Si el cliente no cierra la conexión, permanecerá abierta hasta que se agote el tiempo de espera. Luego, puede alcanzar el límite de maxConcurrentSessions con muy poca actividad en el servidor.


Si su servicio se está ejecutando en su cuenta (Identidad), es posible que haya cambiado su contraseña recientemente; deberá restablecerla para su grupo de aplicaciones IIS en Configuración avanzada | Cuadro de diálogo de identidad.