Welcome to HostingForumz.com!
FAQFAQ      ProfileProfile    Private MessagesPrivate Messages   Log inLog in

IIS HTTP 1.1 keep-alive potential issue

 
   Web Hosting Problem Solving Community! (Home) -> IIS RSS
Next:  HELP! URGENT! IIS & host headers!  
Author Message
Kristin

External


Since: Feb 12, 2005
Posts: 2



(Msg. 1) Posted: Sat Feb 12, 2005 6:43 pm
Post subject: IIS HTTP 1.1 keep-alive potential issue
Archived from groups: microsoft>public>inetserver>iis (more info?)

Hello,

I was wondering if anyone had ever come across an issue with HTTP 1.1
keep-alives not functioning properly in IIS, although it is configured
to use them, and the client requests them.

We have several web applications in our environment exhibiting similar
behavior.

Client sends an HTTP request with connection: keep-alive in the header.


Server responds to this request, but does not indicate either
connection: keep-alive OR connection: close. The client (IE) is
configured to use HTTP 1.1 by default, and IIS is configured to use
keep-alives.

The resulting behavior is similar to 1.0, where the client opens up a
TCP connection for each object on the page.

I've seen some interesting articles with similar symptoms, but most of
them were related to CGI. Those articles also indicated that the
server would respond with a connection: closed, which is not happening
in my case.

I'm not too sure what the code is running on the web servers, but I
know in one case, it's Siebel, if that helps.

Thanks in advance,
Kristin

 >> Stay informed about: IIS HTTP 1.1 keep-alive potential issue 
Back to top
Login to vote
someone9

External


Since: Aug 25, 2003
Posts: 2419



(Msg. 2) Posted: Sun Feb 13, 2005 6:34 am
Post subject: Re: IIS HTTP 1.1 keep-alive potential issue [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

Unfortunately, I need to ask you to better define what "HTTP 1.1 keep-alives
not functioning" means. Here's why.

What you have to realize is that connection keep-alive is not something a
client can simply ask for and get 100% of the time. Remember that
keep-alive is a TCP-level optimization behavior that the webserver, at the
HTTP level, really doesn't care a whole lot about (other than obeying simple
HTTP semantics called out in the spec).

There are A LOT of interactions between the client, server, and server-side
application that have to be perfectly in-sync in order for HTTP Keep-Alive
to be negotiated and used, including:
1. Client *must* support and ask for keep alive. This means either HTTP 1.0
with Connection: Keep-Alive header or HTTP 1.1 without Connection: Close
header, and it must keep the connection open.
2. Server *must* allow keep-alive. This means that the W3SVC/AllowKeepAlive
property must be set to TRUE (it defaults to TRUE, so you should never have
to set it unless you've changed it from the default)
3. The Server-Side application must allow keep-alive. With an ISAPI-based
application, there are many choices, but it basically comes down to the
server-side application telling IIS "I'm ok with keep-alive" though various
means). And the application must also not tell the server to close the
connection.

Along with many other factors (including any other ISAPI Filters/Extensions
on the server, whose behaviors are totally unknown from your perspective),
these things determine whether a given request over a connection is
keep-alive or not.

Since you've barely given any information about these factors about
keep-alive, it is nearly impossible to figure out whether there is a real
issue with IIS (what IIS version are we talking about?), or that something
else on the server is causing the issue, or whether you simply did not
configure the server to behave the way you want.

Also, it is not clear to me:
1. how you are determining that the client is opening up a new connection
for each object on the page
2. how you configured IIS to use keep-alive (you can only configure IIS to
*not* use keep-alive -- you cannot configure IIS to use/force keep-alive)
3. how you determined that your web applications are even cooperating and
compatible with keep-alive. Remember, keep-alive is the newer TCP behavior,
so using it incorrectly can cause web browser to hang while not using it is
always safe.
4. If #1 is true, who actually closeod the connection -- client or server?
If Client closes the connection for some reason, server will oblige.
Keep-alive is not a contract -- it is negotiated compatibility between
client and server and both sides can break it at anytime.

Basically, to look at connection keep-alive issues, you must provide Network
Monitor (or comparable) traces (both HTTP and TCP level) of the
request/responses in question, and you must provide full configuration of
code (ISAPI Filter/Extensions) running on the server that is involved with
those requests. Until you enumerate/eliminate each piece from touching the
request, there is really insufficient evidence to start a "IIS HTTP 1.1
keep-alive potential issue" thread saying IIS is not functioning properly.
There are dozens of moving pieces involved, of which IIS is only involved in
a couple... so unfortunately, keep-alive is not as simple as you think.

--
//David
IIS
http://blogs.msdn.com/David.Wang
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"Kristin" <kristin1 DeleteThis @gmail.com> wrote in message
news:1108262594.552140.179270@c13g2000cwb.googlegroups.com...
Hello,

I was wondering if anyone had ever come across an issue with HTTP 1.1
keep-alives not functioning properly in IIS, although it is configured
to use them, and the client requests them.

We have several web applications in our environment exhibiting similar
behavior.

Client sends an HTTP request with connection: keep-alive in the header.


Server responds to this request, but does not indicate either
connection: keep-alive OR connection: close. The client (IE) is
configured to use HTTP 1.1 by default, and IIS is configured to use
keep-alives.

The resulting behavior is similar to 1.0, where the client opens up a
TCP connection for each object on the page.

I've seen some interesting articles with similar symptoms, but most of
them were related to CGI. Those articles also indicated that the
server would respond with a connection: closed, which is not happening
in my case.

I'm not too sure what the code is running on the web servers, but I
know in one case, it's Siebel, if that helps.

Thanks in advance,
Kristin

 >> Stay informed about: IIS HTTP 1.1 keep-alive potential issue 
Back to top
Login to vote
Kristin

External


Since: Feb 12, 2005
Posts: 2



(Msg. 3) Posted: Wed Feb 16, 2005 11:35 am
Post subject: Re: IIS HTTP 1.1 keep-alive potential issue [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

Hi David,

Thanks for your response.

As far as your first set of questions (more like comments, actually):

1) The client requests connection: keep-alive, and it's an HTTP 1.1
request. The server does not specify anything regarding connection in
its reply.

2) The server supports keep-alives (the W3SVC/AllowKeepAlive metabase
value is set to true)

3) I'm not sure about the application, since I'm more on the network
side and I work in a huge company. It takes a while to even find out
who the right people to contact are.

Your second set of questions:
1) I am determining this through a sniffer trace. A new TCP session is
established for each item on the page.
2) The server's default setting for keep-alive is set (see answer #2
above). This is a Siebel application with its own extensions, and is
not running as an ISAPI filter.
3) That's the problem, I'm not sure how to get that information from
the application. I would hope that the app layer would allow the web
server to make such a decision, but apparently not.
4) The server closes the connection

Based on your response, it is clear that I should be investigating the
application, since the other configuration parameters seem correct.

Thanks,
Kristin
 >> Stay informed about: IIS HTTP 1.1 keep-alive potential issue 
Back to top
Login to vote
someone9

External


Since: Aug 25, 2003
Posts: 2419



(Msg. 4) Posted: Wed Feb 16, 2005 6:24 pm
Post subject: Re: IIS HTTP 1.1 keep-alive potential issue [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

Yeah, I would agree with your assesment to start looking at the application.


If it is an ISAPI Extension, it is possible for you (with a little
debugging) to figure it out. Basically, one would:
1. Attach a debugger to the process which has the Sieble ISAPI Extension DLL
loaded
2. With the debugger having access to Microsoft's public symbol server (
http://www.microsoft.com/ddk/debugging has all the details/downloads), you
would set a break point on HttpExtensionProc of the ISAPI DLL and a break
point on ServerSupportFunction on w3isapi.dll. At this point, you will get
a chance to examine every single function call that the ISAPI makes, and
combined with httpext.h, one can decipher every single function call made by
the ISAPI, all its settings, and at that point, decide whether the ISAPI is
cooperating with keep-alive or not

Anyways, I'm not saying you have to do the above. Smile But someone will have
to end up doing that to figure out what is going on with the ISAPI (if they
don't have source code). It is highly likely to be a couple of function
calls that trigger the break point, and one can quickly determine whether it
is the ISAPI causing the problem or not.

--
//David
IIS
http://blogs.msdn.com/David.Wang
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"Kristin" <kristin1 DeleteThis @gmail.com> wrote in message
news:1108582531.574215.274340@c13g2000cwb.googlegroups.com...
Hi David,

Thanks for your response.

As far as your first set of questions (more like comments, actually):

1) The client requests connection: keep-alive, and it's an HTTP 1.1
request. The server does not specify anything regarding connection in
its reply.

2) The server supports keep-alives (the W3SVC/AllowKeepAlive metabase
value is set to true)

3) I'm not sure about the application, since I'm more on the network
side and I work in a huge company. It takes a while to even find out
who the right people to contact are.

Your second set of questions:
1) I am determining this through a sniffer trace. A new TCP session is
established for each item on the page.
2) The server's default setting for keep-alive is set (see answer #2
above). This is a Siebel application with its own extensions, and is
not running as an ISAPI filter.
3) That's the problem, I'm not sure how to get that information from
the application. I would hope that the app layer would allow the web
server to make such a decision, but apparently not.
4) The server closes the connection

Based on your response, it is clear that I should be investigating the
application, since the other configuration parameters seem correct.

Thanks,
Kristin
 >> Stay informed about: IIS HTTP 1.1 keep-alive potential issue 
Back to top
Login to vote
Display posts from previous:   
   Web Hosting Problem Solving Community! (Home) -> IIS All times are: Pacific Time (US & Canada) (change)
Page 1 of 1

 
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum



[ Contact us | Terms of Service/Privacy Policy ]