2010-02-25 29 views
6

Recibo la siguiente excepción de comunicación para mi servicio wcf que hace cal a otro servicio wcf: "Se ha excedido la cuota máxima de tamaño de mensaje para los mensajes entrantes (65536). Para aumentar la cuota, use la propiedad MaxReceivedMessageSize en el apropiado elemento vinculante ".¿El límite máximo de la propiedad de configuración MaxReceivedMessageSize en wcf afecta el rendimiento del servicio?

Me resolvieron mediante el aumento del tamaño de la siguiente manera: maxReceivedMessageSize = "50000000"

Pero, aquí quiero saber si cualquier efecto secundario de aumentar el tamaño del mensaje a tal nivel grande.

Respuesta

5

Sí - podría. El motivo por el que WCF mantiene este límite bajo (64K) de forma predeterminada es el siguiente: imagine que su servidor está ocupado respondiendo a las solicitudes, por ejemplo, docenas o cientos, y todos requieren el máximo tamaño de mensaje.

Potencialmente, su servidor podría tener que asignar docenas o cientos de búferes de mensajes al mismo tiempo - si tiene 100 usuarios y cada uno solicita 64K, eso es 6.4 MByte - pero si tiene 200 usuarios y cada uno solicita 5 MB - eso es un gigabyte de RAM en el servidor, solo para los buffers de mensajes, para un servicio.

Así que sí, poner un límite al tamaño máximo de mensaje tiene sentido y ayuda a administrar el consumo de memoria de su servidor (y por lo tanto el rendimiento). Si lo abres demasiado, un atacante podría hacer un ataque de este tipo: inundar tu servidor con solicitudes falsas, asignando tanta memoria como sea posible, lo que finalmente reducirá tu servidor (los ataques de denegación de servicio son bastante comunes). .

+0

Por lo tanto, no es solo para bu de respuesta si lo configuramos en el archivo de configuración de servicio/servidor, significa para recibir la solicitud. ¿Entiendo correctamente? ¿Podemos restringir la respuesta del lado del servidor también? lo que quiero decir es que espero que mi servicio genere una respuesta máxima de 2 MB. pero ocurre una excepción y quiero evitar que se envíen respuestas más grandes. ¿Tengo una configuración para eso en el lado del servicio? – batmaci

0

Necesitas aumentar la cuota de acuerdo al servicio web. Un efecto secundario que puedo pensar si usa valores muy grandes es que el uso de la memoria aumentará, pero puede aumentarlo de manera segura a un valor adecuado sin ningún efecto adverso.

Cuestiones relacionadas