Confused about ASP, "sessions", and queuing of multiple requests

O

Ohaya

Hi,

I'm trying to understand a situation where ASP seems to be "blocking" of
"queuing" requests. This is on a Win2K Advanced Server, with IIS5.

I've seen some posts (e.g.,
http://groups.google.com/groups?hl=...-8&[email protected])
that indicate that ASP will queue up requests when they come in with the
same "session".

My first question is "Can someone confirm that this is true?" (see below).

My second is regarding what "same session" means in this context?

Several of the posts that I've seen with respect to this queuing just say
"session", but I've also seen some posts that say "ASP session", and which
specifically mention "the ASP Session object". This latter reference ("ASP
Session object") is more precise, but my testing (again, see below) seems to
indicate that this interpretation of "session" is not "ASP Session object".

Here's the test that tried:

1) I installed the Waitfor from ServerObjects
(http://www.serverobjects.com/products.htm), and created a small "text.txt"
file in c:\.

2) I put Waitfor.asp in my website.

3) I ran Performance Monitor and added the "Requests Queued" counter

4) Using IE, I went to http://myserver/waitfor.asp

5) Once it connected, I started clicking the IE Refresh button


As I clicked the IE Refresh button, I could see the "Requests Queued"
counter climb in Performance Monitor.

The above test SEEM to at least indicate that ASP will *INDEED* only process
a single request from IE, i.e., that ASP *IS* queuing, but I'm still
confused about under what circumstances this queuing will happen (what does
"session" mean in this context?).

Can someone clarify this?

Thanks, and apologies for both the cross-post and somewhat long post...
 
O

Ohaya

Sylvain,

Thanks for responding...

Re. Waitfor, I just installed it for the test I described.

Sorry if I'm being obtuse. I think I understand that one IE instance can
generate multiple HTTP requests into IIS, e.g., in the instances that you
described. In our case, I think your example of setting an IMG SRC to an
ASP is exactly what we have, with multiple of these IMGs on one page.

But, I guess I'm still unclear about when IIS/ASP will or will not handle
these multiple requests in a "queuing" fashion vs. not in a queuing fashion.

What exactly determines this? As I mentioned, the posts I've seen vaguely
mention "in the same session", without clearly defining what they mean by a
"session".

Actually, the reason that I'm chasing all of this around is that we are
running IIS on a multiprocessor server. With the IE client firing multiple
requests to IIS, we thought that the multiple requests from IE would be
spread across the multiple processors.

But on our production server, instead, for a given user operation at the
IE/client end, which, again, creates several HTTP requests to IIS, we're
seeing CPU activity on 1 CPU, then the next CPU, then the next CPU, etc.,
until the user operation is complete.

The conclusion we're coming to is that for some reason ASP on the production
server is not handling the multiple requests "in parallel", but rather
queuing the requests (we see the parallel processing on a different
multiprocessor server that we use for testing, but not on the production
machine).

We just cannot figure out what is different between these 2 machines that
would cause queuing the requests in one case, but not in the other.

Thanks,
Jim
 
O

Ohaya

Sylvain,

BTW, I forgot to mention:

If I run my Waitfor test with 2 different instances of IE (on same machine,
but 2nd IE started from Start, not using Ctrl-N) simultaneously, I see
Requests Executing in Perfmon as 2, i.e., in this situation, IIS *IS*
apparently processing both requests simultaneously/in parallel.

Like I said, I'm confused about what is different (specifically) between the
above test, and generating multiple HTTP requests from a single IE
instance...
 
S

Sylvain Lafontaine

That's true since IIS 3.0 and there are occasions when you don't need to
make quick refresh to see it in action.

For example, this is necessary when the IE is making simultaneous requests
to the IIS. Exemple of this are when you are dividing your page using
Frameset: each frame contains one HTML page as its source. Refreshing a
frameset then require to ask the server for more than one HTML page.

Another example is when the source of an objet is an ASP page, like this:

<img src="get_the_image.asp">

The use of Javascript and of other advanced facilities for requesting data
from one or more ASP pages also rise the possibilities of having multiple
simultaneous requests to the web server. It is clear from those example
that the server cannot run these requests in parallele because of the
possibility that the codes inside theses pages can make contradictory
changes to Session variables, global variables and/or other objects, like
backend requests to a SQL-Server. This should clear any confusion into your
mind.

By the way, using things like WaitFor and others objets for timing in ASP
can result in a severe degradation of performance from the IIS and their
usages must be reserved to the cases when they are strictly necessary.

S. L.
 
K

Ken Schaefer

If you start a new instance of IE, then it does not share any in-memory
cookies (include ASP session state cookie) with the first IE instance. As
far as IIS is concerned, this is two separate ASP sessions. That is why you
are probably seeing parallel processing.

Cheers
Ken

: Sylvain,
:
: BTW, I forgot to mention:
:
: If I run my Waitfor test with 2 different instances of IE (on same
machine,
: but 2nd IE started from Start, not using Ctrl-N) simultaneously, I see
: Requests Executing in Perfmon as 2, i.e., in this situation, IIS *IS*
: apparently processing both requests simultaneously/in parallel.
:
: Like I said, I'm confused about what is different (specifically) between
the
: above test, and generating multiple HTTP requests from a single IE
: instance...
:
:
:
: : > Sylvain,
: >
: > Thanks for responding...
: >
: > Re. Waitfor, I just installed it for the test I described.
: >
: > Sorry if I'm being obtuse. I think I understand that one IE instance
can
: > generate multiple HTTP requests into IIS, e.g., in the instances that
you
: > described. In our case, I think your example of setting an IMG SRC to
an
: > ASP is exactly what we have, with multiple of these IMGs on one page.
: >
: > But, I guess I'm still unclear about when IIS/ASP will or will not
handle
: > these multiple requests in a "queuing" fashion vs. not in a queuing
: fashion.
: >
: > What exactly determines this? As I mentioned, the posts I've seen
vaguely
: > mention "in the same session", without clearly defining what they mean
by
: a
: > "session".
: >
: > Actually, the reason that I'm chasing all of this around is that we are
: > running IIS on a multiprocessor server. With the IE client firing
: multiple
: > requests to IIS, we thought that the multiple requests from IE would be
: > spread across the multiple processors.
: >
: > But on our production server, instead, for a given user operation at the
: > IE/client end, which, again, creates several HTTP requests to IIS, we're
: > seeing CPU activity on 1 CPU, then the next CPU, then the next CPU,
etc.,
: > until the user operation is complete.
: >
: > The conclusion we're coming to is that for some reason ASP on the
: production
: > server is not handling the multiple requests "in parallel", but rather
: > queuing the requests (we see the parallel processing on a different
: > multiprocessor server that we use for testing, but not on the production
: > machine).
: >
: > We just cannot figure out what is different between these 2 machines
that
: > would cause queuing the requests in one case, but not in the other.
: >
: > Thanks,
: > Jim
: >
: > "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)>
: > wrote in message : > > That's true since IIS 3.0 and there are occasions when you don't need
to
: > > make quick refresh to see it in action.
: > >
: > > For example, this is necessary when the IE is making simultaneous
: requests
: > > to the IIS. Exemple of this are when you are dividing your page using
: > > Frameset: each frame contains one HTML page as its source. Refreshing
a
: > > frameset then require to ask the server for more than one HTML page.
: > >
: > > Another example is when the source of an objet is an ASP page, like
: this:
: > >
: > > <img src="get_the_image.asp">
: > >
: > > The use of Javascript and of other advanced facilities for requesting
: data
: > > from one or more ASP pages also rise the possibilities of having
: multiple
: > > simultaneous requests to the web server. It is clear from those
example
: > > that the server cannot run these requests in parallele because of the
: > > possibility that the codes inside theses pages can make contradictory
: > > changes to Session variables, global variables and/or other objects,
: like
: > > backend requests to a SQL-Server. This should clear any confusion
into
: > your
: > > mind.
: > >
: > > By the way, using things like WaitFor and others objets for timing in
: ASP
: > > can result in a severe degradation of performance from the IIS and
their
: > > usages must be reserved to the cases when they are strictly necessary.
: > >
: > > S. L.
: > >
: > > : > > > Hi,
: > > >
: > > > I'm trying to understand a situation where ASP seems to be
"blocking"
: of
: > > > "queuing" requests. This is on a Win2K Advanced Server, with IIS5.
: > > >
: > > > I've seen some posts (e.g.,
: > > >
: > >
: >
:
http://groups.google.com/groups?hl=...-8&[email protected])
: > > > that indicate that ASP will queue up requests when they come in with
: the
: > > > same "session".
: > > >
: > > > My first question is "Can someone confirm that this is true?" (see
: > below).
: > > >
: > > > My second is regarding what "same session" means in this context?
: > > >
: > > > Several of the posts that I've seen with respect to this queuing
just
: > say
: > > > "session", but I've also seen some posts that say "ASP session", and
: > which
: > > > specifically mention "the ASP Session object". This latter
reference
: > > ("ASP
: > > > Session object") is more precise, but my testing (again, see below)
: > seems
: > > to
: > > > indicate that this interpretation of "session" is not "ASP Session
: > > object".
: > > >
: > > > Here's the test that tried:
: > > >
: > > > 1) I installed the Waitfor from ServerObjects
: > > > (http://www.serverobjects.com/products.htm), and created a small
: > > "text.txt"
: > > > file in c:\.
: > > >
: > > > 2) I put Waitfor.asp in my website.
: > > >
: > > > 3) I ran Performance Monitor and added the "Requests Queued" counter
: > > >
: > > > 4) Using IE, I went to http://myserver/waitfor.asp
: > > >
: > > > 5) Once it connected, I started clicking the IE Refresh button
: > > >
: > > >
: > > > As I clicked the IE Refresh button, I could see the "Requests
Queued"
: > > > counter climb in Performance Monitor.
: > > >
: > > > The above test SEEM to at least indicate that ASP will *INDEED* only
: > > process
: > > > a single request from IE, i.e., that ASP *IS* queuing, but I'm still
: > > > confused about under what circumstances this queuing will happen
(what
: > > does
: > > > "session" mean in this context?).
: > > >
: > > > Can someone clarify this?
: > > >
: > > > Thanks, and apologies for both the cross-post and somewhat long
: post...
: > > >
: > > >
: > >
: > >
: >
: >
:
:
 
O

Ohaya

Ken,

Thanks. I think that I understood that scenario (two IE instances), but if
I just run one IE instance and load a HTML page with, say, 2 IMG tags, e.g.:

<IMG SRC="/test.asp">
<IMG SRC="/test1.asp">

and I watch Performance Monitor "Requests Executing" and "Requests Queued",
I am seeing that sometimes the requests get queued (I can see "Requests
Queued" increment, then decrement), and sometimes they don't get queued. I
haven't been able to discern a pattern to this on my test system at home.
I've tried things like clearing the IE cache, setting IE to load pages every
time, etc., to no avail.

I'm really puzzled about why ASP is queuing requests sometime, and not
others on my system. If I could figure that out definitively, maybe it'd
give a hint about why I'm seeing queuing on 2 other systems, but not on one
other one :(...

Jim
 
O

Ohaya

Hi All,

I think that I've made some progress, but I'm not quite sure if it's
backwards or forwards :(!

I tried testing with the keepalive (in IIS Manager) for the website
disabled/unchecked. With keepalive on the website disabled, I am seeing
consistently that when I start IE, then go to my test page, ASP is *ALWAYS*
not queuing. I then re-enabled keepalive on the website, and ASP queuing
went back to being inconsistent again.

Disabling keepalive might be ok, but I also found that if I tried to go to
the test page again after the 1st try, ASP would queue the requests :(.

Seems like I can't win :(...

Any other suggestions??
 
S

Sylvain Lafontaine

Multiple requests to the same session will be executed consecutively, this
is by design and it's a necessity in case global variables (either stored
inside or outside the session) are to be accessed by both requests. The
fact that you have or not such access to shared variables is not relevant to
IIS, as it cannot see "in the future" what the code in your pages will do.

You can have what you want by using "sessionless" page; add the following
statement at the beginning of your pages:

%@LANGUAGE="VBSCRIPT" ENABLESESSIONSTATE="False" %

However, you won't have access to session variables, like Session("MyItem")
= myValue, with this. You can override this restriction by storing your
values elsewhere, like in a SQL-Server or in a QueryString.

The IIS which is giving you parallelism is probably set to use sessionless
by default or have its cookies disabled by some proxy. For the setting, I
cannot give you more information as I don't have access to a IIS5 or 6 right
now.

It is also that what you are seeing is some artifact, like activating
Hyperthreading or adding a second CPU after the Windows as been installed.
When you add a second CPU, you must remake a full installation of Windows or
use Sysprep to correctly activates it. With HT, I don't know if Sysprep is
sufficient.

It is also possible that some other process, like access to a SQL-Server, is
doing what you are seeing.

S. L.


.. What are you are seeing as paral
 
O

Ohaya

Sylvain,

Thank you for this valuable information!!

After testing most of last night, I, too, am coming to the conclusion that
this "ASP queues requests" is normal behavior with IIS and ASP.

I'm thinking that the one system that we think is not queuing requests
actually is. I'm going to the test lab today to try a test this time with
Perfmon running as I did last night.

FYI, re. your comments, that system doesn't go through any proxies, and the
Device Manager shows "ACPI Multiproc", so I think it was installed with
multiprocessor support from the beginning. I'm not sure if cookies are
disabled.

Thanks again!

Jim
 
S

Sylvain Lafontaine

I easy mean to know for sure would be to store the beginning and ending time
of each request. Add some empty work, like adding 10000 times a letter to a
string, if necessary to increase the resolution beetween requests.

S. L.
 
O

Ohaya

Sylvain,

I did my testing, and it appears that even that machine that I thought
was not queuing requests is queuing requests.

I tried your suggestion (on another test machine) with an ASP site that
doesn't use the Session object, and disabled "session state". It's in
the "Configuration" for the website in IIS Manager, BTW.

Anyway, with "Enable session state" unchecked/disabled, I was able to
immediately see that "Requests Queued" stays at 0 all the time. I will
be talking to some applications guys to see if we can get away with not
using the Session object, and if we can, then we'll disable "session
state" on the website, and then, I think we should be "golden".

Sylvain, thanks for all your help. This has been VERY enlightening!

Jim
 
S

Sylvain Lafontaine

By using the statement <%@ ENABLESESSIONSTATE="False" %>, you can disable
the Session state on a per page basis and you can use a mix of state and
stateless pages for your site without any particular problem.

S. L.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,007
Latest member
obedient dusk

Latest Threads

Top