You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Aram W. Mirzadeh" <aw...@qosina.com> on 1995/08/31 16:24:03 UTC

Linux - Apache problems... Answer.

** All the quotes are from Alan Cox (iialan@iifeak.swan.ac.uk) 
** And they're from a mail to Michael Davon (davon@web-depot.com)
** This discovery and answer are a direct result of Michael's search.  And I
helped.

After alot of twicking and playing around and talking about 20 
different people from Linus down to tcp writers, this seems to 
be a problem with the TCP protocol as it were written into 
serveral systems.  Although it seems to show up more in 
Linux because of it's compact networking software.  The problem
is there in BSD, OSF/1, etc...  

Here is a quote from Alan Cox who is working with Linus, and 
the tcp people:

>Its a common TCP protocol problem - sockets can be tied up for
>several minutes leading to stuck accept queues. OSF/1, BSD etc all
>show the problem although Linux is a little more susceptible as
>it allows longer for a connection to time out. That is patchable.

Alan also suggested that people upgrade their kernel to one of the latest
kernels.  These kernels ( the 1.2 series are stable releases of the kernel)
have improved networking code, (although not solved, it should help).

>Also make sure you have 1.2.11+ and run apache standalone so its
>listen(x,128) will have the desired large queue effect.

On a different note.   FCNTL_.... in conf.h under #elif define LINUX ...
Linux doesn't need it and should be removed.

In the release version of 0.8.12 the Makefile should be either removed
or cleanedup.  There are several things in there directly for Linux that 
will not work.  Ofcourse after configure is run it is corrected.  

In util.c there are two (void *) missing... they're just to avoid compiler
warnings, nothing dramatic. 

*** util.c.orig	Thu Aug 31 09:59:32 1995
--- util.c	Thu Aug 31 09:59:55 1995
***************
*** 765,771 ****
  #ifndef MINIMAL_DNS
      hptr = gethostbyaddr((char *)iaddr, sizeof(struct in_addr), AF_INET);
      if(hptr) {
!         conn->remote_host = pstrdup(conn->pool, hptr->h_name);
          conn->remote_name = conn->remote_host;
          str_tolower (conn->remote_host);
      }
--- 765,771 ----
  #ifndef MINIMAL_DNS
      hptr = gethostbyaddr((char *)iaddr, sizeof(struct in_addr), AF_INET);
      if(hptr) {
!         conn->remote_host = pstrdup(conn->pool, (void *)hptr->h_name);
          conn->remote_name = conn->remote_host;
          str_tolower (conn->remote_host);
      }
***************
*** 835,841 ****
                  return pstrdup(a, p->h_aliases[x]);
          }
          return NULL;
!     } else return pstrdup(a, p->h_name);
  }
  
  char *get_local_host(pool *a)
--- 835,841 ----
                  return pstrdup(a, p->h_aliases[x]);
          }
          return NULL;
!     } else return pstrdup(a, (void *)p->h_name);
  }
  
  char *get_local_host(pool *a)

--
Aram W. Mirzadeh, MIS Manager, Qosina Corporation
http://www.qosina.com/~awm/, awm@qosina.com
Apache httpd server team http://www.apache.org