20. februar 2006 - 14:43Der er
24 kommentarer og 1 løsning
Langsom afvikelse af sider i asp.net 2.0
Jeg har lavet et par sites i asp.net 2.0, men jeg oplever at de til tider loader meget langsomt hvis der går for langtid imellem jeg er ind på siderne.
Det er ikke fordi at jeg har ændret i koden, eller genstarted serveren.
Efter et stykke tid går applikationen i "dvale". Dvs. at når du kalder den efter en længere periode med inkativitet, så skal den lige startes op igen.
Inden du oploader din applikation til webserveren, skal du vælge "Publish Website" fra menuen... Med de filer der bliver lavet skulle det gerne gå lidt hurtigere..
hvis du bruger visual web developer så eksisterer den ikke. Mener jeg ikke. Jeg har oplevet samme problem hvis man bruger den indbyggede roleprovider og den skal hente rollerne i databasen istedet for i en cookie. Men det lyder mere til at være det som jacnet beskriver
jeg bruger ekspress versionen og der er ikke punktet Publish website under Build. Det kan vel ikke passe at jeg skal have VS2005 for at kunne compilere mine sider rigtigt?
Men vil det sige at det her med langsom afvikelse er et ny fænomen i ASP.NET 2.0. For alle mine sider i ASP.NET 1.1 køre fint efter de har værte tilgået første gang.
Det har noget at gøre med just in time compilation. Det er fordi der er lavet en ny model som gør at siderne i asp.net 2.0 selv kan kompilere uden at du skal bruge visual studio eller lignende. Det betyder også at du kan lave kode ændringer mens du debugger uden at skulle builde igen
Det er også smart. Men det kan da ikke passe at når jeg er færdig med min side og den på nettet (har sat debug = false), at den så skal gå i dvale heletiden
"...alle mine sider i ASP.NET 1.1 køre fint efter de har værte tilgået første gang" Jeg må indrømme jeg havde forstået det sådan, at det kun var første gang du tilgik en side i din applikation, at det gik langsomt. Hvis der er under 20 minutter mellem du laver requests, så har det vist ikke noget at gøre med dvale-tilstanden som jeg sagde tidligere. Har du ret faktisk testet hastigheden, eller er det på ”øjemål”? Nu skal det jo også være retfærdige sammenligninger du laver på 1.1 og 2.0 sider… med det mener jeg at det er klart at en 2.0 side med WebParts, kalendere, masser af kald til databasen og dit og dat, ikke kan samelignes med en 1.1 sider der bare har et par labels.
Har du fuld kontrol med serveren websitet skal køre fra, eller er du på et webhotel?
Hvis jeg lige har tilgået siden køre den fint, men går der for langtid imellem (en nat) tager det tid at loade siden igen. Jeg har fuldkontrol over webserveren (Win 2003).
Fra IIS Manager under Applications Pools vælg den application pool site asp.net 2.0 website hører til (typisk Default). Højreklik og vælg Properties.
Vælg fanebladet Preformance, og allerøverst er der en checkbox hvor der står noget i stil med ”Shutbown worker process after being ide for:” og så en box med et tal (20 som default). Det er tallet i minutter der går før den går i ”dvale”. Hæv tallet betydeligt, eller fjern fluebenet i checkboxen. Det skulle gerne kunne afhjælpe problemet.
Der må være mere aktivitet på dit ASP.NET 1.1 site, end 2.0 sitet, for 1.1 er længere tid som at starte på end 2.0 er. PHP, ASP 3.0 og lign. er ikke kompileret kode, så det skal ikke startes op på samme både som ASP.NET skal. Til gengæld er kompileret kode hurtigere når det først er kommet i gang :)
nu kendte jeg ikke til det jacknet foreslog. Men jeg kunne forestille mig at det der sker er at når worker process starter op igen, skal alle siderne kompileres igen p.ga den ændre kompileringsmodel i asp.net 2.0
Tja, worker processen optager ressourcer fra serveren, og hvis hvis en process ikke bliver brugt, så er det jo naturligt at stoppe den, så serveren kun bruger ressourcer på ting den arbejder med. Som du ser er der flere indstillinger for worker processen, så det er ikke fordi den "løber løbsk" bare fordi den hele tiden kører.
Personligt ser jeg ikke noget problem i at lade worker processen køre hele tiden. Man kan nemlig kontrolere hvor meget hukommelse processen bruger (fanebladet Recycling). Det kommer selvfølgelig an på ens server, og hvad der ellers kører på den. Men man skal nu have meget begrænsede ressourcer tilrådighed, for at det er en dårlig ide bare at lade den køre. Men som sagt, så kan man indstille memory recycling.
dr_chaos:
Ja, stort set. Det er dog ikke kun et ASP.NET 2.0 problem/feature (alt efter hvordan man ser på det). ASP.NET 1.1 sider skal også kompileres igen, når worker processen starter op. ASP.NET 2.0 skulle dog være noget hurtigere til det, og hvis webapplikationen er precompiled, som vi snakkede om i starten af denne tråd, så er det meget hurtigere.
Er du 100% sikker på der ikke er nogen aktivitet på de ASP.NET 1.1 sider du nævner? Logger du hits på dem?
Jeg kan nemlig ikke give dig anden forklaring på at de ikke skulle være længe om at starte op, end at der har været mere aktivitet på dem kort for at du kommer ind på sitet.
Nej jeg er ikke 100% sikker, men jeg har bare aldrig oplevet at min side har så lange svartider, og nu har jeg rodet med asp.net 1.1 i ca. 2 år. Nå men jeg mange gange for hjælpen!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.