Laden...

Startzeit einer Webanwendung

Erstellt von DonCarlos vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.703 Views
D
DonCarlos Themenstarter:in
19 Beiträge seit 2008
vor 13 Jahren
Startzeit einer Webanwendung

Hallo,

also ich hab derzeit eine kleine Website bei einem shared Hoster für .net webspace.
Das funktioniert soweit auch alles ganz gut. Ich hab vorerst nur eine kleine Demo App installiert, die nicht sehr viel mehr macht als eine kleine Tabelle auszuspucken.
Auch die Antwortzeiten sind in Ordnung.

ABER. Nach längerer Zeit, ein halber Tag , wohl die Zeit bis der IIS Prozess beendet wird, braucht die Anwendung unbandinge 15 Sekunden für den ersten Request.
Dass der Hoster daran sicher nicht ganz unschuldig ist mag sicher sein.

Gibt es hier eine Möglichkeit auf diese erste Antwortzeit einfluss zu nehmen ?

16.835 Beiträge seit 2008
vor 13 Jahren

Hi,

wäre nun interessant zu wissen welche Art von ASP Du verwendest.
Prinzipiell werden die Seiten erst nach dem ersten Aufruf kompiliert - das ist normal, dass dieser Aufruf länger dauert. Und dass dieses aus dem Cache rausfliegt ist auch normal.

Meine Anwendung hat im normalen Betrieb rund 700MB im Speicher. Wenn die Anwendung 15 Minuten eher wenig im Betrieb ist, bin ich bei 160MB. Der IIS behält nur das, was er eben braucht.

Bei ASP.NET MVC ist das Laden der Areas (RegisterAllAreas) das, was die Anwendung am Anfang langsam macht. Hier gibt es viele Tweaks, wie man das Laden von Areas und Routes auf bestimmte Assemblys beschränkt.
Ebenso das verwenden von Routenamen und RouteDictionarys bringt viel. Alles was anonym ist, ist hier langsam.

Bei Classic ASP kann ich leider nicht helfen.

Ich setze mittlerweile auch sehr viel auf dynamisches Komprimieren, wie in diesem Thread zu lesen ist. WS 2008R2 IIS 7.5: Performancesteigerung durch GZip
Hab auch ein paar Worte über den ersten Aufruf der Seiten verloren.

D
DonCarlos Themenstarter:in
19 Beiträge seit 2008
vor 13 Jahren

Hi,
danke für die Antwort.
Meine Anwendung ist nur eine simple Webforms-Anwendung um zu sehen ob ich auf dem Webspace zurecht komme. Die Anwendung hat eine einzige Seite, eine SQLLite Datenbank, deren initialisierung nicht mal 1 sekunde dauert. die Db hat eine hand voll datensätze.
Die komplette Anwendung hat gesamt nicht mal 20 Zeilen Code von mir....
Das Problem der Kompilierung ist mir bewusst.

Das muss doch schneller gehen ? 15 Sekunden das ist ja für einen Server eine Ewigkeit.

Wie geht Ihr mit solch langen (initialen) Antwortzeiten um ?

Ein Workaround wäre natürlich, ein Monitoring System alle 20 Sekunden einen Request machen zu lassen. Aber das ist natürlich nur von hinten durchs Auge....

16.835 Beiträge seit 2008
vor 13 Jahren

Meine Hauptanwendung ist relativ umfangreich und benötigt Initial circa 2500-3500ms; auf dem Webserver, der deutlich leistungsstärker als mein lokaler Rechner ist, dauert um die 1400ms.
Das ist zumindest für mich zu vernachlässigen, da der Anwender anschließend mit einer Reaktionszeit von ~20ms arbeitet.

Ich hab aber auch alle mir bisher bekannten Performance-Tweaks angewendet.

691 Beiträge seit 2007
vor 13 Jahren

@DonCarlos: Das von dir beschriebene Verhalten kann zwei Gründe haben:

  • Du hast soeben ein Release gemacht und die Anwendung wird kompiliert.
  • Seit dem letzten Aufruf hat sich, wie im IIS von deinem Hoster eingestellt, der ApplicationPool aufgrund von Inaktivität schlafen gelegt, oder wurde neugestartet aufgrund von einer Einstellung (z.B. starte den ApplicationPool immer um 2 Uhr morgens neu) oder aufgrund anderer Einflüsse, wie zu viel RAM verbraucht.

Nichtsdestotrotz sind 15 Sekunden keine angemessene Zeit für eine Sampleanwendung.
Du sagst, das du eine Tabelle aufbaust. Kommt diese aus der Datenbank? Falls ja, versuch mal die Datenbankverbindung wegzulassen, falls das der Flaschenhals ist.
Wenn du wirklich nur HTML anzeigst, dann sind 15 Sekunden Warmup-Zeit viel zu viel und ich würde an den Aussagen deines Hosters zweifeln, das dir beim Hostingangebot der versprochene RAM/CPU Zeit zusteht.
Ich habe auch schon mal bemerkt, das die Warmupzeit stark ansteigt, wenn der Server kaum noch freien RAM hat.

Meine Anwendung hat im normalen Betrieb rund 700MB im Speicher

Was ist das denn für ne Mörderanwendung? Das resourcenfressenste, was ich bis jetzt gesehen habe, waren Webanwendungen mit Datenbankzugriffen und ~100 simultanen Zugriffen bei maximal 300MB Ram.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

16.835 Beiträge seit 2008
vor 13 Jahren

Was ist das denn für ne Mörderanwendung?

Automatisierte Erstellung von Betriebssystemen von Großmaschinen für die produzierende Industrie.

D
DonCarlos Themenstarter:in
19 Beiträge seit 2008
vor 13 Jahren

Danke für die Infos.
Das mit dem kompilieren ist mir klar, wobei man auch die Anwendung gleich kompiliert deployen kann, dann liegen nur ncoh aspx dateien rum, und es gibt eine DLL mehr.

Das hab ich jetzt mal gemacht. Mal schaun ob das was bringt und das ganze wenigstens etwas verbessert.

Eine Idee die ich noch gehabt hätte, man könnte ja in der global.asax im application start dafür sorgen dass der thread immer was "zu tun" hat , im sinne einer while(true)-Schleife, mit irgendeiner dummen Aufgabe. Aber das scheint auch nix zu bringen.