Imam asp.net aplikaciju koja se nalazi na windows serveru 2003, a iis je 6. Aplikacija je ogromna i ima mnogo korisnika mada to nije bitno za ovaj problem. Ono sto je bitno jeste da je aplikacija delimicno multitenant. Sta to znaci? Znaci da svi korisnici(firme) dolaze na istu adresu i opsluzuje ih jedan isti kod ali svaka firma ima svoju bazu. Specificnosti u vidu custom slika, xslt-ova, css-ova i sl su resene preko foldera gde svaka firma koja ima nesto specificno ima svoj folder. E sad zasto delimicno multitenant? Pa zato sto se ceo sajt nalazi u jednom pool-u u iis-u.
Zaci, jedan sajt(www.xyz.com), jedan pool(www.xyz.com), isti kod na file sistemu, jedna ip adresa, a vishe baza.
Predpostavljam da uvdjate u cemu je problem, a to je da kada jedan ulogovani korisnik "zakuca" aplikaciju iz bilo kog razloga, svi ostali ostaju bez sesije tako da hocu da mi svaki klijent ili bar vazniji klijenti imaju svoj sopstveni pool tako da ne bi ostajali bez sesije kada neko drugi skrshi aplikaciju. Uslov je da se ostalo nista ne menja drasticno. Znaci, ostaje jedan kod, jedna ip adresa.
Koliko se ja razumem u IIS, na raspolaganju su mi dve mogucnosti da ovo uradim:
1. Napravim n pod domena;pera.xyz.com, zika.xyz.com, mika.xyz.com... i za svaki taj sajt podesim jedan isti home direktorijum u kome se nalazi aplikacija. Takodje, napravim n istoimenih pool-ova tako da svaki sajt ima svoj pool. Podesim svima istu IP adresu ali svaki od njih ima razliciti host header. Dodam u DNS parove simbolicka adresa-IP adresa.
2. Napravim n virtuelnih direktorijuma u postojecem sajtu, /pera, /zika, /mika. Svakom od tih n virtuelnih direktorijuma podesim isti home directorijum i takodje svakome dodam svoj pool. Nema zezanja sa DNS-om i IP adresama.
E sad, konkretan problem i razlog zasto sam otvorio temu:
Ono sto ja ocekujem je da kada su recimo aktivne 3 sesije na 3 razlicita pod domena(na svakom po jedna) da na serveru imam 3 worker procesa i da kada ubijem neki od njih da mi se na klijentu odmah nakon sledeceg request-a pojavi poruka "Service Unavailable"
Medjutim, kada sam probao varijantu 1 to se nije desavalo. Na primer: otvorim sajt iz mozile, zapocne sesija, stopiram pool na serveru - u browseru mi je i dalje aktivna sesija sve dok ne zatvorim tab! Nakon zatvaranja i ponovnog otvaranja taba dobijam poruku "Service Unavailable". Jos cudnije je sto nakon dobijanja poruke "Service unavailable" (podsecam da je pool i dalje stopiran) iz IE-a mogu komotno da otvorim taj sajt.
Kada probam varijantu 2 sve se odigrava bas onako kako ocekujem. Zapocnem sesiju, ubijem pool, sledeci request koji posaljem dobijam "Service Unavailable". Ostali rade ok. Problem sa ovim resenjem 2 je sto moram da pravim izmene u kodu pa mi je jedino zbog toga varijanta 1 izgleda "elegantnije".
Da li je neko iz ovog romana uvideo neki eventualni propust koji dovodi do toga da mi se IIS ne ponasa kako bih ja hteo u varijanti 1? Takodje ako vidi neki potencijalni problem na koji bih mogao da naletim slobodno neka kaze
Hvala