Question

J'ai un service WCF qui nécessite un certain temps de réponse (moins de 1 minute).

Mon problème est que tous si souvent, le plus souvent le matin le service prend beaucoup de temps pour répondre (parfois plus de 2 minutes).

Je pense que c'est parce que l'application a recyclé et la première manche doit recompiler.

Est-ce qui pourrait arriver là d'autres raisons?

Est-il possible de désactiver le recyclage de l'application? Et s'il est, va causer que des effets secondaires ou d'instabilité? Je suppose qu'il doit y avoir une raison pour laquelle les applications asp.net sont mis à recycler.

Y at-il autre chose qui peut être fait pour améliorer cette première performance d'exécution?

Était-ce utile?

La solution

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

  1. Une fois l'App piscine Temps de recyclage a été atteint -. Par défaut, c'est toutes les 29 heures, je pense
  2. Un temps de jeu après la dernière demande à l'application.

L'utilisation d'un keep-alive ping le service résoudrait 2, et alors vous devriez juste avoir à traiter 1.

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

  1. Pour IIS 6
  2. Pour IIS 7

Le temps d'inactivité sur je pense normalement par défaut « infinte », mais peut être configuré par le élément processModel (attribut idleTimeout) de vos fichiers de configuration.

En ce qui concerne la première exécution de course - sans regarder votre application, il est difficile de dire, avez-vous d'exécuter quelque chose comme dotTrace ou d'une autre profileur dessus?

Vous faites beaucoup de recherches et de données de mise en cache intensive dans cette première charge? Peuvent-ils être reportés?

Autres conseils

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

Les problèmes de performance peuvent être causés par tout ce que vous ne l'avez pas exclu d'abord. Puisque vous ne l'avez pas décidé quoi que ce soit, il pourrait être cauased par quoi que ce soit.

Peut-être une idée stupide: Pouvez-vous programmer une application de la console pour frapper votre service à par exemple 5h30 le matin, de sorte que cette demande prendrait beaucoup de temps pour courir, et vos utilisateurs réguliers qui viennent après cela n'aura pas ce problème?

Bien sûr - il est pas affaire à la cause, mais pour le moment, il pourrait être une solution utile - pas

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top