web-dev-qa-db-fra.com

IIS Express localhost se charge très lentement pour la première demande

Veuillez vérifier ci-dessous la liste des choses que j'ai essayées avant de fermer en double.


Le problème:

  • Je crée une toute nouvelle application ASP.NET MVC, je la construit et je l'exécute -> La page prend entre 20-30 secondes à charger.
  • Chaque fois que je reconstruis l'application et que j'essaie de charger la page, cela prend 20-30 secondes même si je le fais immédiatement après la construction précédente (c'est-à-dire, pas un problème de délai d'inactivité, je suppose?).

Je suis aux prises avec ce problème depuis hier, j'ai lu tous les articles/articles que j'ai trouvés à ce sujet sans succès. Cependant, je dois admettre que je suis nouveau dans ASP.NET et dans le développement Web en général et que je ne suis pas familiarisé avec la configuration IIS, de sorte que j'ai peut-être manqué quelque chose.

Les choses que j'ai essayées:

  • Antivirus et pare-feu désactivés.

  • IPv6 désactivé en commentant la ligne ::1 localhost dans le fichier hosts. Mon fichier hosts ressemble à ceci:

    127.0.0.1       localhost
    # ::1             localhost
    
  • Essayé différents navigateurs.

  • Changement du port de l'URL de l'application.

  • Modification de l'URL de l'application de localhost:port à 127.0.0.1:port, mais lorsque je le fais, je reçois:

    Requête incorrecte - Nom d'hôte non valide

  • Désinstallez et réinstallez IIS Express (essayé plusieurs versions: 7.5, 8.0 et 10.0).

  • J'ai essayé d'installer les "Fonctionnalités de développement d'application" sous Internet Information Services\World Wide Web Services.

  • Lancez le programme d'installation du VS et lancez une réparation.

Informations sur l'environnement:

  • Windows 7 x64.
  • Visual Studio 2015.
  • .NET 4.5.2.
  • Fonctionnalités actuellement activées par IIS: J'utilise IIS Express, donc je ne suis pas sûr que cela soit lié.

IIS enabled features

Une idée de ce qui pourrait causer ce problème?


Mettre à jour:

Je viens d'essayer d'utiliser Jexus Manager. Chargez la configuration à partir du fichier .sln comme indiqué ici , démarrez le site Web et essayez les scénarios suivants:

  • Parcourir le site Web après l'avoir redémarré (les deux actions dans Jexus Manager) -> 15 à 20 secondes.
  • Navigation sur le site Web (à l'aide de Jexus) après la reconstruction de la solution sous VS -> 30 secondes ou plus.
7
Ahmed Abdelhameed

Il y a beaucoup de choses qui se passent lorsque vous lancez l'application Asp.Net MVC pour la première fois. Je ne peux donc pas identifier exactement ce qui pourrait causer un goulot d'étranglement, mais essayez les suggestions suivantes qui pourraient vous aider à améliorer le temps de démarrage de votre application Web:

  1. Toujours exécuter votre application Web à partir de Visual Studio en mode Release (je sais que vous la connaissez, mais que vous devez quand même la mettre)
  2. Vérifiez votre fichier web.config et assurez-vous que System.Web\compilation a debug=false
  3. Vérifiez la méthode Application_Start dans le fichier Global.asax.cs pour supprimer les appels inutiles
  4. Les vues de rasoir sont compilées au moment de l'exécution par défaut. Par conséquent, si vous ne modifiez pas votre vue au moment de l'exécution, assurez-vous de la pré-compiler, mieux si vous pouvez utiliser RazorGenerator pour compiler votre vue. vues.
  5. Profilez votre application en utilisant un profileur, Glimpse par exemple.

J'espère que cela donnera un coup de pouce à votre application lors du démarrage.

6
Dipen Shah

Cela peut être pour les raisons suivantes:

  • Le serveur a une lourde charge de traitement.
  • Les processus de travail spécifiques sont constamment inactifs.
  • Aucun nouvel espace de traitement n'est disponible.

Il existe une option bien déguisée appelée Action de délai d'inactivité qui peut être modifiée dans les paramètres avancés du pool d'applications. L'opération time-out est par défaut définie sur Terminate , ce qui signifie que le processus Windows hébergeant le site sera arrêté. Si cette terminaison se produit, le site doit être créé et le processus démarré à la visite suivante, ce qui entraîne un chargement très lent pour la première fois. 

Si vous utilisez un serveur dédié uniquement pour votre service ou pour un petit nombre de sites, il est évident que votre style est limité. Le mettre à 0 est la voie à suivre dans ces cas. D'autres soutiennent que 1740 minutes. Pourquoi? C’est le plus petit nombre premier (en heures) sur 24.

pour changer l'action Action de délai d'inactivité en 0 sur Microsoft Windows Server 2012 R2, accédez à IIS et sélectionnez le pool d'applications desservant votre site, puis sélectionnez Paramètres avancés dans le menu situé à droite, puis Délai d'inactivité (minutes), réglez-le sur 0 et appuyez sur OK.

Une autre solution possible : installez la fonction IIS Initialisation de l’application. Ensuite, cela devrait fonctionner avec cette configuration:

  • définir le mode de démarrage sur AlwaysRunning sur le pool d'applications
  • Préchargement activé à True au niveau du site Web.
1