Jag tror inte att sessionernabara slutar helt utan anledning, så det är nog ett kodmässigt fel.
Kan du visa koden som kontrollerar om användaren är inloggad på varje sida?
14 svar · 612 visningar · startad av joup
Hej!
Jag har ett problem med sessions. Driver en hemsida som är lite av ett community med diskussionsforum och annat, det kräver att besökarna blir medlemmar och loggar in.
Tyvärr har jag problem med att vissa (rätt många), blir automatiskt utloggade regelbundet utan anledning. De kan logga in utan problem, men medan de surfar runt på sidan så kan de helt plötsligt loggas ut. Det är inte time-out-tiden som är problemet, för den är satt till 20 minuter, och besökarna kan bli utloggade utan att de varit "inaktiva" i 30 sekunder. Så av någon anledning så "tappar" besökaren sin session, helt utan anledning.
Jag sätter sessions så här när besökaren loggar in (den hämtar infon från databasen):
Session("uid") = RS("id")
Session("username") = RS("username")
Session("admin") = RS("admin")
Servern är en Celeron 2.0 Ghz, 256 DDR ram, kör Windows 2003, IIS 6, time-out-tiden för "sessions" är satt till 20 minuter, cirka 1000 medlemmar loggar in dagligen, och som mest har vi cirka 100 inloggade samtidigt.
Är det någon som haft liknande problem eller vet vad det beror på? Har vänt ut-och-in på koden, men kan inte hitta någon anledning till varför det blir så här.
Jag tror inte att sessionernabara slutar helt utan anledning, så det är nog ett kodmässigt fel.
Kan du visa koden som kontrollerar om användaren är inloggad på varje sida?
Jag har liknande problem på min site.
Men jag kan ge dig några tips som skapat problem för mig. Undvik att köra med Session.Abandon(). Det verkar som den fungerar lite små bugigt och på nåt sätt får andras Sessioner än den som den är tänkt för att dö.
Men som sagt jag har liknande problem just nu. Men jag postar npg en egen tråd om det.
OverRRIDE:
Jag kör med vanliga if-satser, typ
<%if Session("uid")="" then%>
Inte inloggad
<%else%>
Inloggad
<%end if%>
Har samma problem, när sessionen går ut så loggas användarna ut automatiskt med en If sats som jag använder, nästan precis som den ovan.
Detta verkar vara ett återkommande problem i samband med IIS 6 på Windows Server 2003. Jag har nu hört flera som har samma problem. Jag har dock ingen aning om vad det beror på, och jag har inte lyckats hitta nåt på MSDN om det heller.
Inte någon annan som har några uppslag?
Jag hade ett liknande problem med IIS6. Kom fram till att det (i mitt fall) var fler än en (1) "worker process".
i IIS manager:
1. Leta fram den Application Pool som berörd webbplats ligger i.
2. Högerklicka på denna och välj properties.
3. Gå till fliken Performance och kolla i rutan längst ner ("maximum number of worker processes").
Är inte säker på vad "default" är, men efter jag ställde till 1 så har det fungerat. Hur det påverkar prestanda mm vet jag inte, men det skulle vara bra att få reda på.
Obbelix:
Den var redan satt som 1 default
Jag är inte säker på att man skall ge sig på de där inställningarna utan att veta vad som är standard eller rekommenderade värden.
Dessutom har jag väldigt svårt att se att IIS inte kan replikera sessioner mellan olika arbetarprocesser, om den ens bryr sig om att balansera sådant mellan dem.
Jag skulle också gissa på att det är något fel i koden.
Förresten, vore det inte smartare att spara ner alla sessioner i en?
T ex session("user") = RS("id");RS("username");RS("admin")
Och sen delar du upp all information mha split() till arrayer. Då borde iallafall servern bli gladare när den slipper sätta 2000 sessioner dagligen i onödan :)
logic:
Hur får man splitten att funka?
Dim vUserSettings
vUserSettings = Split(Session("User"),";")
Jag rekommenderar dock inte denna typ av lagring i session, personligen.
Det känns som om man kan ta den otroligt marginella prestandasmällen som det innebär att ha en sessionsvariabel per värde, till fördel för läsbarhet och eventuell iteration av inställningar knytna till t.ex. en användare.
Jag menar, det blir ju inte direkt mindre allokerat utrymme i minnet om man lagrar allt i en klump. Det är fortfarande lika mycket data.
Att en intensiv maskin har över, låt säga 10.000 sessionsvariablar att hålla reda på är inte alls så ovanligt som man tror. Och det är inte det som gör att servern rasar.