ASP.Net l'application s'exécute lentement de la première fois
J'ai une application web écrite en ASP.Net 3.0 à l'aide de C#, de la production de la machine est un serveur windows 2003 avec IIS 6.0 et sql server 2005.
Structure De La Demande
La figure suivante montre la structure de mon ASP.net application web:
racine de l'application dans IIS (//localhost/es) comprend les communes des pages, par exemple: les pages maîtres, le thème, le contrôle de l'utilisateur, les images d'un dossier.
nombre de sous-projets au titre de la racine de l'application (//localhost/es/sous-projet).
supprimer web.config en sous-projets
assembler les fichiers de sous-projets est sous dossier bin de la racine de l'application (sous-propriétés du projet >> compiler >> la sortie de la construction de chemin d'accès: ..\bin\
ma demande est un 3–niveau de l'application web(Biasness couche ,la couche de Données et la couche de Présentation. Aussi, chaque page aspx son code derrière cs fichier)
Paramètres IIS
Application de la piscine
Le recyclage des Processus de travail après "1740 en quelques minutes"
Délai d'inactivité, les processus de travail après une période d'inactivité "20 minutes"
Ping processus de travail de tous les "30 secondes"
Démarrage de limite de temps pour les travailleurs processer "90 Secondes"
Shoutdown limite de temps pour les travailleurs processer "90 Secondes"
De Configuration De L'Application
Cache limité ASP fichiers dans la mémoire "500"
Cache limité ASP fichiers sur le disque "2000"
Le Déploiement D'Application:
- Je publier l'application web avec tous ses fichiers sur le serveur de production.
Le Problème :
L'application fonctionne assez lent à la première fois, il prend plus de 10 secondes à charger, mais tous à la prochaine fois qu'une page est demandée, c'est d'être plus rapide. Je crois que la première fois qu'une page est demandée, il compile et qu'il faut généralement plus de temps que les autres requérante,
parce que la page est dans la Mémoire Cache. La question ici, c'est pourquoi c'est prendre du temps lors de la compilation de la page à la première fois?
Les tentatives pour résoudre le Problème :
J'ai essayé de faire ce qui suit :
- Le déploiement d'une copie des fichiers vers un serveur de production.
- Changé les paramètres IIS, changé délai d'Inactivité de l'arrêt des processus de travail
- De désactiver le Traçage
- Désactiver l'État de Session
- Désactiver l'État d'Affichage d'une Page
- Set debug=false dans le web.config
- La création d'un " bonjour tout le monde sous-projet sous la racine de l'application , il faut 5 secondes .
- Création distinct bonjour application web , comme ci-dessus, il prend du temps à charger.
- Supprimer le code dans le gestionnaire d'événements page_load , mais il n'a pas d'incidence sur les performances.
- Publier seulement les fichiers de la racine de l'application (pas de code écrit dans le code-behind), et tous les fichier dans le code source de sous-projet (le code est dans le code-behind) ,
Toutefois, l'application démarre toujours de la lenteur, mais ensuite il devient plus rapide.
S'il vous plaît aider à diagnostiquer et à résoudre ce problème.
Vous devez vous connecter pour publier un commentaire.
En plus de ce que sky a dit, vous pourriez exécuter un "warm-up script" comme la dernière étape de votre processus de déploiement. Bien que ce ne sera pas accélérer le temps nécessaire pour que la première compilation, en utilisant un script de ce type permettrait au moins d'éviter aux utilisateurs de voir un démarrage lent.
Jetez un oeil ici pour un exemple de script:
http://programmerramblings.blogspot.com/2008/09/aspnet-site-warmup.html
Une autre raison pour laquelle la première demande de votre application est lente pourrait être qu'IIS a pour démarrer le asp.net processus de travail au cours de la première demande. Mais cela ne devrait pas affecter d'abord les demandes vers d'autres pages.
publier le site web, qui précompilation, par opposition à la copie.
Le problème que vous rencontrez est normal.
J'ai eu le même en ruby on rails application avec des passagers, mais j'ai trouvé un bel outil ( http://www.wekkars.com ) qui empêche le serveur d'aller dormir.
Vous pouvez également utiliser le démarrage Automatique de l'application de la fonctionnalité qui est disponible pour .net framework 4 applications web. Pour plus d'informations, visitez ici.
essayer de pré-compilation de votre site:
http://msdn.microsoft.com/en-us/library/ms227972.aspx
Il y aura toujours un léger retard sur la première charge de tout .NET application en raison de CLR composant .NET Framework plate-forme. Parce que JIT(Just in Time) résidant à l'intérieur d'CLR (Environnement d'Exécution pour les ASP.NET) convertit le Langage Intermédiaire) du code machine natif, il prend toujours un peu plus longtemps sur la première exécution de l' .net applications.
Une vidéo détaillée sur cette question spécifique peut être consulté sur:
https://www.youtube.com/watch?v=ruf4U9_Rbss&index=1&list=PL8598C97BA1D871C1
Espère que cela aide.
Pour asp.net les applications en cours d'exécution sur IIS 7.0 et versions inférieures, l'écriture d'un programme de réchauffement ou le script est un meilleur moyen d'éviter l'application de la piscine d'inactivité des délais d'attente.
Ce chauffe déclencheur peut être le programme d'installation à partir de la même application ou à partir des sites web externes ou des programmes.
Vous pouvez trouver différentes façons d'atteindre le même dans ce l'article
Il n'y a pas moyen de contourner cela. Vous obtiendrez toujours un léger retard sur la première charge à la compilation du site.