You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ryan Bloom <rb...@raleigh.ibm.com> on 1999/06/30 15:07:04 UTC

MPM code not disabling nagle?

Okay, I must have missed something somewhere.  I have just searched the
apache-2.0/mpm tree, and the only reference to TCP_NODELAY I can find, is
in test/test-writev.c.  We have removed the disable_nagle call altogether,
and we do not set the socketopt inline.  Everything I have read about
experienced about web servers, says that this option needs to be disabled.

In the 1.3 tree, we were disabling nagle twice, once when we created the
socket in the parent, and once in the child process. Now, we don't disable
nagle at all.  

In the apr tree, Just for informational purposes, we removed the disable
nagle call from the child process.  We were inheriting the socket, and all
of the socket options should have bee retained when the socket was dupped.

What am I missing?

Ryan

_______________________________________________________________________
Ryan Bloom		rbb@raleigh.ibm.com
4205 S Miami Blvd	
RTP, NC 27709		It's a beautiful sight to see good dancers 
			doing simple steps.  It's a painful sight to
			see beginners doing complicated patterns.	


Re: MPM code not disabling nagle?

Posted by Dean Gaudet <dg...@arctic.org>.

On Wed, 30 Jun 1999, Dean Gaudet wrote:

> TCP options aren't inherited across an accept() (IP options are, TCP
> options aren't... dumb, but that's how it is).  It's always been pointless
> to set it on the listening socket... I just never bothered pointing it
> out.  So you need to add it back in your models... 

aha, this appears to be the case for bsd stacks... but not for linux 2.0.x
or for solaris 2.6... on those it's worthwhile setting the option on the
parent, and you can save the syscall on each request.  At the moment the
code just favours portability. 

Dean



Re: MPM code not disabling nagle?

Posted by Dean Gaudet <dg...@arctic.org>.
On Wed, 30 Jun 1999, Ryan Bloom wrote:

> Okay, I must have missed something somewhere.  I have just searched the
> apache-2.0/mpm tree, and the only reference to TCP_NODELAY I can find, is
> in test/test-writev.c.  We have removed the disable_nagle call altogether,
> and we do not set the socketopt inline.  Everything I have read about
> experienced about web servers, says that this option needs to be disabled.
> 
> In the 1.3 tree, we were disabling nagle twice, once when we created the
> socket in the parent, and once in the child process. Now, we don't disable
> nagle at all.  
> 
> In the apr tree, Just for informational purposes, we removed the disable
> nagle call from the child process.  We were inheriting the socket, and all
> of the socket options should have bee retained when the socket was dupped.

TCP options aren't inherited across an accept() (IP options are, TCP
options aren't... dumb, but that's how it is).  It's always been pointless
to set it on the listening socket... I just never bothered pointing it
out.  So you need to add it back in your models... 

If you look in prefork.c you'll see it's disabling nagle. 

Dean