Pregunta

Tengo un servicio WCF que requiere un cierto tiempo de respuesta (menos de 1 minuto).

Mi problema es que cada cierto tiempo, con mayor frecuencia en las mañanas el servicio tarda mucho tiempo para responder (a veces más de 2 minutos).

Estoy pensando que esto se debe a que la aplicación ha reciclado y la primera ejecución debe recompilar.

¿Hay otras razones que esto podría suceder?

¿Es posible desactivar el reciclaje de aplicación? Y si lo es, habrá que cause efectos secundarios o la inestabilidad? Estoy asumiendo que debe haber una razón por la cual las aplicaciones ASP.NET se establecen para reciclar.

¿Hay algo más que se puede hacer para mejorar esa primera actuación plazo?

¿Fue útil?

Solución

Básicamente las siguientes reglas dictan cuando una aplicación se recicla o se descarga:

  1. Después del tiempo de grupo de aplicaciones de reciclaje se ha llegado -. Por defecto, ésta es cada 29 horas creo
  2. Un tiempo establecido después de la última solicitud de la aplicación.

El uso de un mantenimiento de conexión para hacer ping al servicio resolvería 2, y luego usted acaba de tener que lidiar con 1.

En función de la versión de IIS, hay formas ligeramente diferentes para configurar esto.

  1. Para IIS 6
  2. Para IIS 7

El tiempo de inactividad a cabo Creo normalmente por defecto a "infinte", pero se puede configurar a través de la elemento processmodel (atributo idleTimeout) de los archivos de configuración.

En cuanto a la primera actuación de ejecución - sin tener en cuenta su aplicación es difícil de decir, que se ejecuta algo así como dotTrace u otro generador de perfiles sobre ella?

¿Está haciendo una gran cantidad de búsquedas intensivas y datos de almacenamiento en caché en esa primera carga? Éstos pueden ser diferidos?

Otros consejos

Sí se puede evitar que el AppPool de reciclaje. Otra opción sería la creación de un trabajo de mantenimiento de conexión para hacer ping continuamente el servicio para mantener el proceso de trabajo de dormir.

Los problemas de rendimiento puede ser causada por cualquier cosa que no ha descartado la primera. Ya que no han descartado cualquier cosa fuera, se podría cauased por nada en absoluto.

Tal vez una idea tonta: ¿podría programar una aplicación de consola para que alcance su servicio en, por ejemplo, 5:30 de la mañana, por lo que esta solicitud se necesitaría mucho tiempo para correr, y sus usuarios habituales que después de eso no tendrá ese problema?

Por supuesto - no se ocupa de la causa, pero por el momento, podría ser una solución útil -? No

Marc

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top