Je développe des sites basés sur la plateforme .NET. Je déploie généralement ces sites sur mon IIS local, afin de pouvoir les tester et voir leurs fonctionnalités avant de les mettre en ligne. Cependant, chaque fois que je redémarre Windows, il semble que les sites mettent beaucoup de temps à s'exécuter pour la première fois.
Je connais JIT et je suis également au courant de cette question , mais cela ne répond pas à ma question.
JIT se produit-il à chaque redémarrage de Windows? Est-ce lié à la création du processus w3wp.exe? Pourquoi les sites sont-ils si lents pour la première demande après chaque redémarrage?
Réponses:
Ce problème est la compilation JIT. Le pool d'applications a besoin de temps pour créer les bibliothèques avant de pouvoir commencer à les traiter. Cela peut être accéléré en utilisant un script d'échauffement, mais c'est quelque chose qui doit se produire. Cela dépend également si vous utilisez un site Web ou un projet d'application Web. Un site Web est JIT pour chaque page, donc le tout premier hit est lent et chaque nouvelle page a également un temps de compilation supplémentaire. Les projets d'applications Web sont précompilés et ne devraient pas subir ce coup aussi durement, mais les bibliothèques doivent encore être chargées. Plus vous avez de bibliothèques / d'outils, plus ce hit a tendance à être pire. Voici quelques liens qui discutent de l'échauffement:
http://weblogs.asp.net/gunnarpeipman/archive/2010/01/22/iis-application-warm-up-module.aspx http://blogs.iis.net/steveschofield/archive/2009/05/30 /application-pool-warm-up.aspx /programming/2063461/iis-web-applications-warmup http://sharepoint.smayes.com/2011/06/application-pool-specific-warm -up-scripts /
la source
La réaction lente à votre première demande est due au fait qu'IIS démarre / charge uniquement un site ou un pool d'applications sur sa première demande entrante. Et après un laps de temps fixe, aucune nouvelle demande entrante n'arrive sur le serveur IIS arrête à nouveau le site (recyclage du pool d'applications).
ASP.NET 4.0 a une nouvelle fonctionnalité appelée démarrage automatique. Avec cette fonctionnalité, vous pouvez définir un pool d'applications ou un site individuel pour démarrer lui-même avant toute demande. Cela se déclenche au démarrage (lorsque IIS démarre) ou lorsque vous mettez à jour un site ASP.NET (qui arrête le site).
Vous avez besoin d'IIS 7.5 pour l'utiliser.
Il existe également une option pour effectuer certaines tâches supplémentaires lorsque le démarrage automatique entre en jeu, par exemple. pour précharger les données dans le cache.
la source
Une partie du problème est également le GAC. La sécurité des bibliothèques doit être vérifiée à chaque fois qu'elles sont chargées, ce qui signifie que toute une charge de travail de type chiffrement est effectuée, ce qui ralentit considérablement les choses. Il y a un moment, MS a parlé des performances de WPF, qui a décrit ce problème - leur réponse était "ne mettez pas de choses dans le GAC si vous ne pouvez pas l'aider"
la source
IIS a une fonctionnalité ennuyeuse (parfois) pour les sites Web à faible trafic. Il recycle les processus de travail inutilisés - qui entraînent le premier utilisateur sur le site; parfois un délai extrêmement long (30+ secondes). http://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/
la source