Process Recycling fejl i IIS 6.0 under WinServ2003? (Session-tab)
Jeg har mistanke om en fejl i IIS 6.0 under Windows Server 2003.Vores problem er følgende: en af vores servere dropper sessions
helt sporadisk - nogen gange efter 1-2 minutter, selvom der er
sat en session timeout på f.eks. 60 minutter både i server-
konfigurationen og selve scriptet (Session.Timeout=60) ...
Problemet opstår uanset om sessions fornyes eller ej - jeg har
lavet et lille testsystem, hvor session fornyes hver 10. sekund,
og her tabes session alligevel med jævne mellemrum.
Problemet er opstået indenfor de sidste 3-6 måneder, vi er ikke
klar over præcis hvornår.
Vi har to servere med Windows Server 2003. Jeg har mistanke om,
at det kan skyldes en opdatering fra Windows Update, der er kommet
engang indenfor de sidste 6 måneder - vores ene server har nemlig
været opdateret med jævne mellemrum, hvor den anden ikke er; på
den, som ikke er blevet opdateret, er der ingen problemer. De
står på samme netværk, og den ene er opdrindeligt en klon af den
anden, så de har været helt identisk sat op fra starten.
Jeg har fremstillet et session test script:
http://www.danline.dk/test/sessiontest/
Her kan du sætte en session-variabel ved at udfylde de to felter
og trykke på "SET" knappen; skriv f.eks. "TEST" og "123" i de to
felter. Tryk så på "poll every 10 sec" - så reloader siden automatisk
hvert 10. sekund, og du kan så se om din session holdes i live ...
hvis din "TEST" session variabel forsvinder, er der noget galt.
Jeg har også et andet test script:
http://www.danline.dk/test/sessiontest2/
Vent 5 sekunder, så starter systemet ... her kører jeg i to frames,
den øverste bruger en IFRAME til at holde session i live - den
reloader hver 10 sekunder. I den øverste frame kan du så se dit
oprindelige session ID, og efter scriptet har kørt i f.eks. en
time, kan du så klikke på "check again" i den nederste frame - hvis
SessionID i den øverste og nederste frame ikke stemmer overens, er
der noget galt.
Kildekoden til begge scripts kan downloades her:
http://www.danline.dk/test/test.zip
Nu stødte jeg så på følgende KB artikel fra Microsoft:
"Worker process recycling drops application session state (IIS 6.0)"
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8aeb52d0-a9dd-47f9-bec1-dc24e6da3bb1.mspx
Jeg har så "for sjov" prøvet, på den server hvor jeg har problemet,
at gå ind i IIS Manageren, under "Application Pools" - højreklik på
"DefaultAppPool" og vælg "properties" (eller "egenskaber") ... under
fanen "recycling": slå alle checkboxes fra. Genstart serveren.
Nu virker det på min server - efter denne procedure, ser alle problemer
med sessions ud til at gå væk.
BEMÆRK: hvilke andre konsekvenser det har, rent performance mæssigt, at
slå recycling fra på servere med store mængder traffik, skal jeg ikke
kunne sige, men det er nok noget du lige skal overveje.
Hvad enten du kan reproducere disse session udfald på din server
eller ej, vil jeg meget gerne høre fra dig. Det ville være en
stor hjælp, hvis flere vil afprøve disse scripts, så vi kan
forsøge at identificere fejlen entydigt inden vi går til
Microsoft med en formel fejlrapport...