On Mon, 7 Jan 2002, Ryan Bloom wrote:

> On Monday 07 January 2002 10:48 am, Sander van Zoest wrote:
> > So, you are saying that I can create an apache httpd daemon where it would never 
>make a
> > stat(2) in the default DocumentRoot directory?
> > If so, let me know how, because that would be really useful.
> If the modules are implemented correctly, that should just happen with:
> <Location /foo/nostat>
>     SetHandler PerlHandler
> </Location>

Okay with 2.0.28 beta (on FreeBSD 4.4-RELEASE), I have the following config (rest 
defaults):

DocumentRoot "/var/tmp/nostats/here"
<Location /foo/nostat>
   SetHandler server-status
</Location>

I count around 6 stat() calls for this single request in regards to DocumentRoot.

Here is my ktrace of a request to /foo/nostat:
---
 <snip>
 14977 httpd    CALL  select(0x9,0xbfbfd15c,0,0,0xbfbfd154)
 14977 httpd    RET   select 1
 14977 httpd    CALL  read(0x8,0x8122000,0x2000)
 14977 httpd    GIO   fd 8 read 444 bytes
       "GET /foo/nostat HTTP/1.1\r
        Host: localhost\r
        User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:0.9.7) Gecko/\
        20011222\r
        Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=\
        0.9, image/png, image/jpeg, image/gif;q=0.2, text/plain;q=0.8, text/cs\
        s, */*;q=0.1\r
        Accept-Language: en-us\r
        Accept-Encoding: gzip, deflate, compress;q=0.9\r
        Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r
        Keep-Alive: 300\r
        Connection: keep-alive\r
        \r
       "
 14977 httpd    RET   read 444/0x1bc
 14977 httpd    CALL  break(0x8174000)
 14977 httpd    RET   break 0
 14977 httpd    CALL  gettimeofday(0xbfbfd344,0)
 14977 httpd    RET   gettimeofday 0
 14977 httpd    CALL  stat(0x8124dac,0xbfbff1dc)
 14977 httpd    NAMI  "/var/tmp/nostats/here/foo/nostat"
 14977 httpd    RET   stat -1 errno 2 No such file or directory
 14977 httpd    CALL  lstat(0x8124e6c,0xbfbff1ac)
 14977 httpd    NAMI  "/var"
 14977 httpd    RET   lstat 0
 14977 httpd    CALL  lstat(0x8124e6c,0xbfbff1ac)
 14977 httpd    NAMI  "/var/tmp"
 14977 httpd    RET   lstat 0
 14977 httpd    CALL  lstat(0x8124e6c,0xbfbff1ac)
 14977 httpd    NAMI  "/var/tmp/nostats"
 14977 httpd    RET   lstat 0
 14977 httpd    CALL  lstat(0x8124e6c,0xbfbff1ac)
 14977 httpd    NAMI  "/var/tmp/nostats/here"
 14977 httpd    RET   lstat 0
 14977 httpd    CALL  lstat(0x8124e6c,0xbfbff1ac)
 14977 httpd    NAMI  "/var/tmp/nostats/here/foo"
 14977 httpd    RET   lstat -1 errno 2 No such file or directory
 14977 httpd    CALL  gettimeofday(0xbfbfcc44,0)
 14977 httpd    RET   gettimeofday 0
 14977 httpd    CALL  break(0x8176000)
 14977 httpd    RET   break 0
 14977 httpd    CALL  break(0x8178000)
 14977 httpd    RET   break 0
 14977 httpd    CALL  issetugid
 14977 httpd    RET   issetugid 1
 14977 httpd    CALL  open(0xbfbfea78,0,0x280a6167)
 14977 httpd    NAMI  "/usr/share/zoneinfo/GMT"
 14977 httpd    RET   open 9
 14977 httpd    CALL  fstat(0x9,0xbfbfee7c)
 14977 httpd    RET   fstat 0
 14977 httpd    CALL  read(0x9,0xbfbfcb70,0x1f08)
 14977 httpd    GIO   fd 9 read 56 bytes
       "TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\
        \0\0\0\^A\0\0\0\^D\0\0\0\0\0\0GMT\0\0\0"
 14977 httpd    RET   read 56/0x38
 14977 httpd    CALL  close(0x9)
 14977 httpd    RET   close 0
 14977 httpd    CALL  break(0x817a000)
 14977 httpd    RET   break 0
 14977 httpd    CALL  read(0x8,0x8122000,0x2000)
 14977 httpd    RET   read -1 errno 35 Resource temporarily unavailable
 14977 httpd    CALL  writev(0x8,0xbfbff2ac,0x1)
 14977 httpd    GIO   fd 8 wrote 1812 bytes
       "HTTP/1.1 200 OK\r
        Date: Mon, 07 Jan 2002 19:12:41 GMT\r
        Server: Apache/2.0.28 (Unix)\r
        Content-Length: 1602\r
        Keep-Alive: timeout=15, max=100\r
        Connection: Keep-Alive\r
        Content-Type: text/html; charset=ISO-8859-1\r
        \r
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
        <html><head>
        <title>Apache Status</title>
        </head><body>
        <h1>Apache Server Status for escher.san.yahoo.com</h1>

        <dl><dt>Server Version: Apache/2.0.28 (Unix)</dt>
        <dt>Server Built: Jan  7 2002 11:04:35
        </dt></dl><hr /><dl>
        <dt>Current Time: Monday, 07-Jan-2002 11:12:41 PST</dt>
        <dt>Restart Time: Monday, 07-Jan-2002 11:12:20 PST</dt>
        <dt>Parent Server Generation: 0</dt>
        <dt>Server uptime:  20 seconds</dt>
        <dt>0 requests currently being processed, 0 idle workers</dt>
        </dl><pre>W...........................................................\
        ....
        ................................................................
        ................................................................
        ................................................................
        </pre>
        <p>Scoreboard Key:<br />
        "<b><code>_</code></b>" Waiting for Connection,
        "<b><code>S</code></b>" Starting up,
        "<b><code>R</code></b>" Reading Request,<br />
        "<b><code>W</code></b>" Sending Reply,
        "<b><code>K</code></b>" Keepalive (read),
        "<b><code>D</code></b>" DNS Lookup,<br />
        "<b><code>C</code></b>" Closing connection,
        "<b><code>L</code></b>" Logging,
        "<b><code>G</code></b>" Gracefully finishing,<br />
        "<b><code>I</code></b>" Idle cleanup of worker,
        "<b><code>.</code></b>" Open slot with no current process</p>
        <p />
        PID Key: <br />
        <pre>
           0 in state: W ,
        </pre>
        <hr />To obtain a full report with current status information you need\
         to use the <code>ExtendedStatus On</code> directive.
        <hr />
        <address>Apache/2.0.28 Server at escher.san.yahoo.com Port 80</address\
        >
        </body></html>
       "
 14977 httpd    RET   writev 1812/0x714
 14977 httpd    CALL  write(0x4,0x8125524,0x4f)
 14977 httpd    GIO   fd 4 wrote 79 bytes
       "127.0.0.1 - - [07/Jan/2002:11:12:41 -0800] "GET /foo/nostat HTTP/1.1" \
        200 1602
       "
 14977 httpd    RET   write 79/0x4f
 14977 httpd    CALL  read(0x8,0x8122000,0x2000)
 14977 httpd    RET   read -1 errno 35 Resource temporarily unavailable
 14977 httpd    CALL  select(0x9,0xbfbfd15c,0,0,0xbfbfd154)
 14977 httpd    PSIG  SIGINT caught handler=0x80777f4 mask=0x0 code=0x0
 14977 httpd    RET   select -1 errno 4 Interrupted system call
 14977 httpd    CALL  close(0x8)
 14977 httpd    RET   close 0
 14977 httpd    CALL  close(0x6)
 14977 httpd    RET   close 0
 14977 httpd    CALL  close(0x5)
 14977 httpd    RET   close 0
 14977 httpd    CALL  sigprocmask(0x1,0x280b5b00,0xbfbfcea0)
 14977 httpd    RET   sigprocmask 0
 14977 httpd    CALL  sigprocmask(0x3,0x280b5b10,0)
 14977 httpd    RET   sigprocmask 0
 14977 httpd    CALL  exit(0)
---

Cheers,

--
Sander van Zoest                                          [EMAIL PROTECTED]
High Geek                                         http://Sander.vanZoest.com/

Reply via email to