2010-10-15 15 views
9

Ich benutze ASP.Net4 MVC2 für meine Anwendung. Die erste Person, die die Anwendung verwendet, muss normalerweise lange warten, bis die Anwendung reagiert. Danach ist die Anwendung ziemlich ansprechend. Wenn die Anwendung für 15 Minuten inaktiv ist, wird dieselbe Person oder die nächste Person, die die Anwendung verwendet, erneut lange warten. Es sieht so aus, als ob die Anwendung kompiliert wird, nachdem sie 15 Minuten im Leerlauf war. Kann mir jemand sagen, wo ich nach dem Problem suchen sollte? Vielen Dank.Anwendung kompiliert alle 15 Minuten

Antwort

8

Es ist fast sicher der Fall, dass das, was Sie erleben, ist App Pool Recycling. Es ist wahr, dass es einige Zeit braucht, um neu zu initialisieren, nachdem der Pool recycelt wurde, aber es sollte nicht so lange dauern. Wie lange ist ein "langes Warten"? Eine Sekunde? Mehrere? In IIS können Sie konfigurieren, wie regelmäßig Ihr App-Pool wiederverwendet wird. Für IIS 7 klicken Sie mit der rechten Maustaste auf Ihren App-Pool und wählen Sie "Erweiterte Einstellungen" und dann "Idle Time-Out". Sie können diesen Wert erhöhen. (Oder 0, um sie vollständig zu deaktivieren.)

+0

ich die app-Pool Recycling am 01.00 jeden Tag, aber es ist noch während der Geschäftszeiten nach kurzer Ruhezeit geschieht. Die Wartezeit beträgt etwa 30 Sekunden bis 1 Minute. – user266909

+1

@ user266909, aber hast du das "Idle Time-Out" angepasst? –

6

Sie müssen das Problem zuerst genau diagnostizieren, bevor Sie Implementierungslösungen starten. Zuerst muss verifizieren, wenn es in der Tat ist, ein App Pool recyceln. Sie können, indem Sie diesen Abschnitt Ihrer web.config starten:

<healthMonitoring> 
     <rules> 
     <add name="Application Lifetime Events Default" 
      eventName="Application Lifetime Events" 
      provider="EventLogProvider" 
      profile="Default" 
      minInstances="1" 
      maxLimit="Infinite" 
      minInterval="00:01:00" 
      custom="" /> 
     </rules> 
</healthMonitoring> 

Es wird ein Ereignis in das Windows-Ereignisprotokoll jederzeit asp.net log rezykliert selbst. Es gibt auch einen Grund für den Recycling (z. B. jemand web.config usw. gestoßen). Wenn es ist ein Recycling, dann müssen Sie herausfinden, warum ist es Recycling. Liegt es daran, dass IIS darauf eingestellt ist, egal was? Liegt es daran, dass Ihre App den Speicher nicht richtig verarbeitet und der Speicherdruck asp.net veranlasst, sich selbst zu recyceln? Diese Fragen müssen zuerst beantwortet werden.

Zuerst feststellen, ob es sich um eine Wiederverwendung handelt, indem Sie die obige Konfiguration hinzufügen und warum. Sobald Sie die Antwort erhalten, können Sie den Speicher usw. überprüfen.

+0

Welchen Abschnitt in web.config sollte ich das setzen? Vielen Dank. – user266909

+1

Setzen Sie es als direktes Kind von - http://msdn.microsoft.com/en-us/library/2fwh2ss9.aspx –