ID: 43105 Updated by: [EMAIL PROTECTED] Reported By: ian at onlineloop dot com Status: Open Bug Type: Apache2 related Operating System: Solaris, Linux, Mac OS X PHP Version: 5.2.5RC2-dev New Comment:
It seems that the bug was introduced here: http://cvs.php.net/viewvc.cgi/php-src/main/fopen_wrappers.c?revision=1.175.2.3.2.14&view=markup&pathrev=PHP_5_2 (revision 1.175.2.3.2.14 of fopen_wrappers.c) Previous Comments: ------------------------------------------------------------------------ [2007-12-26 22:22:41] [EMAIL PROTECTED] I did some more tests: PHP 4.4.7: couldn't reproduce PHP 5.1.6: couldn't reproduce PHP 5.2.4: couldn't reproduce PHP 5.2.5: problem found PHP 5.3-200712262130: problem found ------------------------------------------------------------------------ [2007-12-26 21:34:25] [EMAIL PROTECTED] I can't reproduce the bug in PHP 5.1.6 on Darwin Kernel Version 8.11.1, which makes me think its an issue of 5.2.5 only. ------------------------------------------------------------------------ [2007-12-23 14:08:14] [EMAIL PROTECTED] Apache 1.3.33 and PHP 5.2.5 running on Darwin Kernel Version 8.11.1 (Mac OS X 10.4.11) compiled with configure command (gcc): './configure' '--prefix=/usr/local' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-apxs' '--with-kerberos' '--enable-cli' '--enable-exif' '--enable-ftp' '--enable-mbstring' '--enable-mbregex' '--enable-sockets' '--with-curl' '--with-config-file-path=/private/etc' '--sysconfdir=/private/etc' '--with-mysql=/usr/local/mysql' '--with-mysql-sock=/tmp/mysql.sock' '--without-pear' '--with-gd' '--enable-gd-native-ttf' '--with-png-dir' '--with-zlib' '--with-bz2' '--with-libxml-dir' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--enable-sqlite-utf8' '--enable-zip' '--disable-cgi' doesn't seems to be closing open files (requires, includes etc.) which ends up with the error "Too many open files" very often. # apachectl restart # lsof -u www | wc -l > 56 # lsof -u www | grep "\.php" | wc -l no output After running one PHP script: # lsof -u www | grep "\.php" | wc -l > 22 Another page hit: # lsof -u www | grep "\.php" | wc -l > 104 And so on... The number of open files just keeps increasing. For some reason PHP 4.4.7 don't have this behavior, that is, apache keeps the number of open files somewhat constant when PHP is not running. For phpMyAdmin the first entries of lsof looks like: # lsof -u www | grep "\.php" | head httpd 678 www 6r REG 14,2 26700 915904 /Users/data/htdocs/mysql/libraries/common.inc.php httpd 678 www 7r REG 14,2 18504 915886 /Users/data/htdocs/mysql/libraries/core.lib.php httpd 678 www 8r REG 14,2 2063 915950 /Users/data/htdocs/mysql/libraries/sanitizing.lib.php httpd 678 www 9r REG 14,2 9447 915968 /Users/data/htdocs/mysql/libraries/Theme.class.php httpd 678 www 10r REG 14,2 10571 915906 /Users/data/htdocs/mysql/libraries/Theme_Manager.class.php httpd 678 www 11r REG 14,2 9447 915968 /Users/data/htdocs/mysql/libraries/Theme.class.php httpd 678 www 12r REG 14,2 33846 915974 /Users/data/htdocs/mysql/libraries/Config.class.php httpd 678 www 13r REG 14,2 44257 915868 /Users/data/htdocs/mysql/libraries/Table.class.php httpd 678 www 14r REG 14,2 79607 915957 /Users/data/htdocs/mysql/libraries/common.lib.php httpd 678 www 18r REG 14,2 1919 915824 /Users/data/htdocs/mysql/libraries/js_escape.lib.php ------------------------------------------------------------------------ [2007-11-29 16:03:43] marcus dot mueller at grintsch dot com As I stated above we have this issue on two Linux boxes with self-compiled PHP binaries. These were compiled using gcc! ------------------------------------------------------------------------ [2007-11-28 16:36:24] ian at onlineloop dot com Coming back to the bug report here now. In the meantime some private emails were exchanged, including a pfiles output from Solaris showing that PHP had over 210,000 open files after 24 hours running on our servers. Within 48 hours (we let it go this far onyl once), apache/php eats around 12Gb of RAM and has between 170 and 220 child processes with over 230,000 open files. Under 5.1.6 the usage is more around 1.5-2Gb ram, and 30-70 child processes, with rarely more than 100 open files (only when we are really under load do we get to more than about 800 open files at any one time). A small patch was sent to me to try, however this has changed nothing. I was also asked to compile with gcc if possible, however this is not feasible as too many other things would have to be recompiled. Besides, we specifically went away from gcc because everything we had that was compiled with gcc was seg faulting all the time, however with the Sun Studio compiler suite, everything is stable. I seriously doubt this is an apache bug, why were things working with previous versions of PHP, and not this one? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/43105 -- Edit this bug report at http://bugs.php.net/?id=43105&edit=1