Après des années de développement ASP.NET, je suis en fait assez surpris que je n'arrive pas à trouver une solution satisfaisante pour cela. P>
Pourquoi un site IIS Asp.net semble-t-il toujours s'endormir (pendant 2 à 6 secondes) après une certaine période d'inactivité (après plusieurs heures), au cours de laquelle aucune réponse HTTP n'est envoyée de serveur au client. Cela se produit sur tout type de site, une page ou plusieurs, dB ou non, quels que soient les paramètres. Comment puis-je résoudre ce problème? P>
Pendant le temps d'attente, le serveur n'est pas occupé et il n'y a pas de pics élevés ni de pénuries de mémoire (.NET). Je suppose que cela a à voir avec Windows en déplaçant le processus IIS à l'arrière-plan et à sa mémoire au fichier de page, mais je ne suis pas sûr. Quiconque aucune idée? P>
Editer: une solution consiste à envoyer une demande HTTP une fois par heure environ, mais j'espère que quelque chose de plus constructif.
EDIT: Ce que je voulais dire est: après des heures d'inactivité, cela met en pause plusieurs secondes sur toute nouvelle demande HTTP. P>
3 Réponses :
Le délai d'attente par défaut pour IIS est de 20 minutes. Cela signifie que si votre application ASP.NET ne reçoit aucune nouvelle demande de 20 minutes, elle fermera le processus de travail. Il peut prendre une durée considérable de temps pour réchauffer le processus de ne rien - charger des assemblages en mémoire, précompilation, etc.
( éditer em>: j'ai assemblé une simple classe d'assistance qui résout le délai d'attente standard qui résout le délai d'attente standard Problème - Fondamentalement, l'application Web "pokes" elle-même de tous ces temps de garder le processus vivant. L'approche idéale consiste à changer le réglage de IIS, mais pour les serveurs où cela n'est pas possible, ma classe fonctionne assez bien. - Code Au fond fort>) p> tandis que le processus de travailleur est toujours en vie, il ne devrait pas être impéritionnalisé. Certainement pas aussi vite que vous décrivez. Il est possible que vous puissiez compter sur des articles qui sont mis en cache pendant une très courte période et tombent quand ils n'ont pas été demandés pendant plus de quelques secondes. Sans en savoir plus sur les détails de votre application, il est impossible de dire. P> Comme d'habitude, votre application est le seul moyen de donner des informations concrètes. Utilisation d'un produit comme Les fourmis vous aideront à déterminer où dans le code de votre L'application dépense le plus de temps, de sorte que vous puissiez isoler où le "suspendu" se produit. p> utilisation (peut-être dans App_Start): p>
Vous pointez quelques pensées intéressantes. J'ai toujours supposé que cela n'a jamais été arrivé au Application_Start Code>, mais qu'est-ce que je sais, peut-être qu'il y arrive, charge des libs, etc., puis reprend. Veuillez noter que le temps n'est pas 20 minutes (heure du délai de session), il s'étouffe un peu de temps après environ 3 heures, mais je ne suis pas sûr. Le temps peut être variable. Ce n'est pas seulement "un site", c'est "tous les sites" sur de nombreux systèmes et versions IIS / Windows. Tous sont .net 3.5 cependant.
Sur "mais qu'est-ce que je sais" i> >>> signifiait dire: je dois me connecter, ou faire une trace sur ou autre chose. Je connais des fourmis mais pas sûre de pouvoir vous aider ici: le blocage semble se produire avant que tout ne soit chargé, ce qui inclurait des fourmis.
Je viens de remarquer le même commentaire ici ici Eggheadcafe.com/software/aspnet/30548981 /slow-site-startututututup.a SPX , qui mentionne ce délai d'attente d'inactivité. Cela n'arrive pas localement, seule la télécommande sur les configurations que je ne gère pas toujours. Cela ne devrait pas nécessiter de déterminer si c'est tout dans ce contexte.
+2! C'est une excellente petite classe, avec une très belle technique! Ma propre approche jusqu'à présent était avec un fil de fond, mais si vous connaissez les problèmes de threads dans ASP.NET, je les évite plutôt. L'utilisation d'objets mis en cache et ses délais d'attente sont excellents. Q. Devrait-il rester à la fois: p
La page est en panne, pourriez-vous s'il vous plaît entrer le code concerné ici?
Pouvez-vous s'il vous plaît nous montrer à nouveau votre classe d'assistance? Il semble être hors ligne.
Si vous utilisez IIS 7, il y a une application d'appels de plug-in IIS au chaud de l'équipe IIS qui aidera à garder tout ce qui est grillé p>
J'ai écrit un Blog Post À propos de mes expériences en l'utilisant. P>
Plugin intéressant. En outre, le délai d'attente de 20 minutes peut être défini sur le pool d'applications. Je l'ai défini sur 24 heures sur la plupart des serveurs, ce qui aide (PS: votre site est insensible ...)
Hilarant - je suppose que le blog était reconstruisant haha - comment ironique
Si vous ne compilez que votre code derrière pour le moment, vous voudrez peut-être aussi regarder pré-compiler vos fichiers ASPX à une heure compliquée forte> (plutôt que d'exécution, qui est la valeur par défaut). Je crois que cela sur la compilation de la mouche est ce qui prend la majeure partie du temps lorsqu'un site dormant asp.net est réveillé. Vous pouvez en savoir plus sur son ici . p>
mise à jour: p>
Le pool d'applications est tué lorsque la valeur IDLETime-Out est atteinte - cette valeur par défaut à 20 minutes (vous pouvez modifier cette valeur). Êtes-vous sûr que l'interface utilisateur n'est pas recompilée après le redémarrage de l'application dans ce cas? (Je ne suis pas sûr de savoir si cela force une intervalle d'interface utilisateur ou non). P>
Bien que votre déclaration soit correcte, la compilation des pages ne se produit une fois, même si vous ne choisissez pas de précompilisation (ce que je préfère si j'ai un mot à dire dans un projet). La question mentionnée dans la question est causée après 20 minutes d'inactivité et pourrait être considérée comme le «mode veille» du pool d'applications. Vérifiez vos journaux si vous avez un petit site Web local: lorsque les premiers clients arrivent à 4 heures du matin, vous verrez une longue période d'attente pour les toutes premières demandes.
Quelle version de IIS utilisez-vous? Et avez-vous accès administrateur à IIS?
+1, mais appartient à Serverfault.
Compilez-vous votre site? Sinon, vous ne vous manquez pas sur des améliorations de très grandes performances.
@theminesggggg: Les sites sont compilés, le débogage n'est pas défini, les optimisations sont activées pour les (aucune) DLL. @John: Je ne sais pas qu'il appartient à Serverfault, car cela me trouble vraiment en tant que programmeur, mais corrigez-moi si je me trompe
D'accord, nous devrions supposer que c'est un problème de code avec l'application ASP.NET jusqu'à ce qu'il devienne évidemment autrement.
Remarque: Ce n'est pas un seul site, c'est un site que j'ai vu, construit par moi ou par quelqu'un d'autre. Les sites de shopping "professionnels" montrent ce comportement la nuit lorsqu'il y a noué en ligne, des expériences privées d'une page montrent également ce comportement. Il me manque peut-être d'un cadre de compilation / publication, mais d'autres ont raté cela aussi et j'aimerais l'entendre.
Pourquoi le vote "proche"? Pouvez-vous clarifier? Si cela doit être déplacé ailleurs, laissez un commentaire.
Peut-être devrions-nous en effet la déplacer à Serverfault, comme je vois maintenant qu'il ne s'agit pas de la programmation. Comment puis-je continuer à déplacer la question?
TX (voir mon commentaire là-bas: Aimez-le!). Devrait rester sur alors;)
J'ai résolu ce problème avec simplement code-derrière, vous pouvez vérifier ici: http://stackoverflow.com/questions/27339997/how-to-always-yo u-chaud-up-asp-net-w ebsites-webform-mvc ? Noredirect = 1 # Commentaire 43136405_27339997