DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=44351>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=44351

           Summary: File descriptor leak when using prg RewriteMap
           Product: Apache httpd-2
           Version: 2.2.8
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: mod_rewrite
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


Hi,

There's a file descriptor leak in httpd under Linux when using mod_rewrite's
RewriteMap with prg (external process).

The first prg gets 3 fds (stdin, stdout, stderr).
The second one gets 5 fds (stdin, stdout, stderr + 2 pipes).
The third one gets 7 fds (stdin, stdout, stderr + 2 pipes + 2 pipes).
and so on.

Apache 2.2 spawns one process per prg.
Apache 2.0 spawns one process per prg and per vhost.

Under 2.0 with 85 vhosts and 6 external prg (my setup) gets thousands of fds,
leading to an out of file descriptor error.
This is highly limited with Apache 2.2 but the bug still exists.

With Linux you can get the fd information under /proc/<pid>/fd/.

Here is how I build Apache and a minimalistic httpd.conf that lets one reproduce
the problem.

./configure --with-mpm=prefork --disable-maintainer-mode --disable-access
--disable-auth --disable-include --disable-autoindex --disable-asis
--disable-cgi --disable-negotiation --disable-dir --disable-imap
--disable-actions --disable-userdir --disable-proxy-ftp --disable-proxy-connect
--disable-setenvif --disable-env --disable-mime --disable-so --disable-alias
--enable-headers --enable-proxy --enable-proxy-http --enable-rewrite
--enable-ssl --enable-status


LockFile    var/httpd.lock
PidFile     var/httpd.pid
User  httpd
Group httpd
Listen *:80

RewriteEngine On
RewriteLock var/lbsync.lock
RewriteMap pool1 prg:/usr/local/lb/lb_1
RewriteMap pool2 prg:/usr/local/lb/lb_2
RewriteMap pool3 prg:/usr/local/lb/lb_3

<VirtualHost *>
        ServerName      www.try1.com
        RewriteEngine On

        RewriteRule . http://${pool1:%{ENV:addr}}/$1
        RewriteOptions  inherit

</VirtualHost>

<VirtualHost *>
        ServerName      www.try2.com
        RewriteEngine On

        RewriteRule . http://${pool2:%{ENV:addr}}/$1
        RewriteOptions  inherit

</VirtualHost>
<VirtualHost *>
        ServerName      www.try3.com
        RewriteEngine On

        RewriteRule . http://${pool3:%{ENV:addr}}/$1
        RewriteOptions  inherit

</VirtualHost>
<VirtualHost *>
        ServerName      www.try4.com
        RewriteEngine On
        RewriteRule . http://${pool1:%{ENV:addr}}/$1
        RewriteOptions  inherit

</VirtualHost>
<VirtualHost *>
        ServerName      www.try5.com
        RewriteRule . http://${pool1:%{ENV:addr}}/$1
        RewriteOptions  inherit

</VirtualHost>

Regards,

Charles

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to