2009-04-17 6 views
0

J'ai un service WCF qui nécessite un certain temps de réponse (moins de 1 minute). Mon problème est que de temps en temps, le plus souvent le matin, le service met beaucoup de temps à répondre (parfois plus de 2 minutes). Je pense que c'est parce que l'application a recyclé et la première exécution doit recompiler.asp.net service WCF lent ... va désactiver l'aide au recyclage des applications asp.net?

Y a-t-il d'autres raisons pour lesquelles cela pourrait se produire? Est-il possible de désactiver le recyclage des applications? Et si c'est le cas, cela causera-t-il des effets secondaires ou de l'instabilité? Je suppose qu'il doit y avoir une raison pour laquelle les applications asp.net sont configurées pour recycler.

Y a-t-il autre chose qui peut être fait pour améliorer cette première exécution?

Répondre

1

Fondamentalement, les règles suivantes dictera lorsqu'une application est recyclé ou déchargé:

  1. Après l'App piscine Temps de recyclage a été atteint - par défaut, c'est toutes les 29 heures, je pense.
  2. Un délai après la dernière demande d'application.

L'utilisation d'un keep-alive ping le service résoudrait 2, et vous auriez juste pour traiter 1.

En fonction de votre version de IIS, il y a des façons légèrement différentes pour configurer cette .

  1. For IIS 6
  2. For IIS 7

Le temps d'inactivité sur je pense normalement par défaut "infinte", mais peut être configuré par l'processModel element (idleTimeout attribute) de vos fichiers de configuration. En ce qui concerne les performances en première exécution - sans regarder votre application, il est difficile de dire si vous avez exécuté quelque chose comme DotTrace ou un autre profileur dessus?

Effectuez-vous beaucoup de recherches intensives et de données de mise en cache dans cette première charge? Peut-on les différer?

2

Oui, vous pouvez empêcher le recyclage de l'AppPool. Une autre option consisterait à créer un travail keep-alive pour ping continuellement le service pour empêcher le processus de travail de dormir.

0

Les problèmes de performance peuvent être causés par tout ce que vous n'avez pas exclu en premier. Puisque vous n'avez rien exclu, cela pourrait être cautionné par quoi que ce soit.

+0

Y at-il des problèmes courants que je devrais regarder? À l'heure actuelle, je pense que c'est le recyclage des applications car le problème se produit au moment où le pool d'applications est recyclé. De plus, le service WCF appelle d'autres services qui ont le même paramètre de recyclage et je peux voir leurs temps de réponse sauter à peu près au même moment de la journée. – dtc

+0

Je devrais ajouter que nous avons regardé le trafic et les performances du serveur et que nous n'avons pas vu de pics de trafic lorsque le service prend beaucoup de temps. – dtc

+0

Si vous pouvez confirmer que le pool d'applications est effectivement recyclé au moment où le pic de performance se produit, vous ne ferez aucune hypothèse - vous le saurez. –

0

Peut-être une idée idiote: pourriez-vous programmer une application de console pour frapper votre service à, par exemple. 5 h 30 du matin, pour que cette demande prenne beaucoup de temps et que vos utilisateurs habituels arrivent après cela n'auront pas ce problème?

Bien sûr - il ne s'agit pas de la cause première, mais pour le moment, cela pourrait être une solution de contournement utile - non?

Marc

Questions connexes