ID: 27215
Comment by: wf at bitplan dot com
Reported By: waboring at 3gstech dot com
Status: Open
Bug Type: Performance problem
Operating System: Redhat 9
PHP Version: 5CVS-2004-02-10 (dev)
New Comment:
We get Apache crashes with this issue. We are loading some 100 PHP
classes that are generated from an UML model. The total number of lines
is some 23.000. Initially the require_once calls for all classes take a
few millisecs. After a while the time rises to 3, 7, 15, 25 or more
seconds until Apache crashes.
Using __AUTOLOAD does not help much. have a look at this profile:
needed 4765 msecs
start:23:42:07.662623
after GenepiArchitecture include:23:42:07.670712
after GenepiContent include:23:42:10.656884
be/estro/genepi/classNameValueList.php:23:42:10.742749
after session_start:23:42:10.772402
be/estro/genepi/classWebFrameManager.php:23:42:10.977352
be/estro/genepi/classWebFrame.php:23:42:11.376788
be/estro/genepi/classTimer.php:23:42:11.483785
be/estro/genepi/classSystemConfiguration.php:23:42:11.636121
be/estro/genepi/classDatabaseManager.php:23:42:11.807113
be/estro/genepi/classDatabase.php:23:42:12.21742
be/estro/genepi/classSessionManager.php:23:42:12.288590
be/estro/genepi/classSession.php:23:42:12.422696
be/estro/genepi/classUserManager.php:23:42:12.556828
com/bitplan/common/XPath.class.php:23:42:14.405958
be/estro/genepi/classUser.php:23:42:14.745952
be/estro/genepi/classUserRoleManager.php:23:42:14.866260
be/estro/genepi/classUserRole.php:23:42:14.941703
be/estro/genepi/classMenuManager.php:23:42:14.990230
be/estro/genepi/classMenu.php:23:42:15.512703
be/estro/genepi/classMenuItemManager.php:23:42:15.580588
be/estro/genepi/classMenuItem.php:23:42:15.586010
be/estro/genepi/classFunctionCallManager.php:23:42:15.591146
be/estro/genepi/classFunctionCall.php:23:42:15.596076
stop:23:42:16.251670
1.9 secs for XPath.class.php alone ...
Previous Comments:
------------------------------------------------------------------------
[2004-03-23 17:44:26] waboring at 3gstech dot com
Some more data points. I used apache bench to run the test.php script
in my last post. I tested against php 4.3.2 and today's cvs php5.
Here are the results.
php4:
Server Software: Apache/1.3.26
Server Hostname: phphtmllib.hemna.corp.qualys.com
Server Port: 80
Document Path: /test.php
Document Length: 34 bytes
Concurrency Level: 1
Time taken for tests: 9.748 seconds
Complete requests: 100
Failed requests: 0
Broken pipe errors: 0
Total transferred: 22900 bytes
HTML transferred: 3400 bytes
Requests per second: 10.26 [#/sec] (mean)
Time per request: 97.48 [ms] (mean)
php5:
Server Software: Apache/1.3.26
Server Hostname: phphtmllib.hemna.corp.qualys.com
Server Port: 80
Document Path: /test.php
Document Length: 34 bytes
Concurrency Level: 1
Time taken for tests: 39.551 seconds
Complete requests: 100
Failed requests: 0
Broken pipe errors: 0
Total transferred: 24300 bytes
HTML transferred: 3400 bytes
Requests per second: 2.53 [#/sec] (mean)
Time per request: 395.51 [ms] (mean)
------------------------------------------------------------------------
[2004-03-23 17:06:45] waboring at 3gstech dot com
ok with further testing, I have trimmed my configure line down to the
following.
./configure \
-with-apxs=/usr/local/apache/bin/apxs
I then restart apache.
First hit to the test script .097 s
Second hit .187 s
third .264 s
.332 s
.346 s
.392 s (peaked out here)
In each test, I wait a few seconds to make sure there is no load on the
machine. I'm using a seperate machine to run the browser as to not
polute the server response times.
The entire php script.
<?php
$_time = explode(" ",microtime());
$start = $_time[1] + $_time[0];
$phphtmllib = "phphtmllib";
include_once( $phphtmllib."/includes.inc");
$_time = explode(" ", microtime());
$stop = $_time[1] + $_time[0];
$elapsed = substr($stop - $start, 0, 5);
echo "<i>elapsed time: ".$elapsed." s </i><br>\n";
?>
------------------------------------------------------------------------
[2004-03-23 16:40:14] waboring at 3gstech dot com
finally bugs.php.net is accessable again. I wasn't able to hit it
since last friday! bleh.
Anyway, I have tested w/ an up to date (as of now) cvs tree of php-src
and have re-run the test and am still seeing significant slowdowns just
by doing includes.
I am running the sample script that I have listed in the original
post.
php4 = .075 ms
php5 = .372 ms
php5 is acting strangely. I do a restart of apache.
First time I hit the test script (php5) I get a time of about .100ms.
I then wait about 2 seconds and make sure there is no load on the box.
Then I hit reload in the browser. That takes .237ms. I do the same
thing again, and the next time the script takes even longer to execute
at .372ms.
Here is my configure line.
./configure \
--with-oci8=/u01/app/oracle/product/8.1.7 \
--enable-sigchild \
--with-mcrypt \
--with-gd \
--with-png-dir=/usr \
--with-jpeg-dir=/usr \
--with-zlib-dir=/usr \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--with-xml \
--with-zlib \
--with-gdbm \
--with-dom \
--with-curl=/usr \
--with-mysql=/usr \
--enable-mbstring \
--enable-tokenizer \
--enable-sockets \
--with-kerberos=/usr/kerberos \
--with-openssl \
--disable-cgi \
--with-xsl \
--with-bz2 \
--with-mhash \
--enable-soap \
--with-sqlite \
--with-flatfile \
--with-inifile \
--with-curlwrappers \
--with-apxs=/usr/local/apache/bin/apxs
------------------------------------------------------------------------
[2004-03-13 05:01:13] [EMAIL PROTECTED]
Can't you test this with some other code which doesn't require bug
#27227 to be fixed..?
------------------------------------------------------------------------
[2004-03-03 14:28:25] [EMAIL PROTECTED]
Then we leave the status at "Feedback" until you can test again.
Derick
------------------------------------------------------------------------
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/27215
--
Edit this bug report at http://bugs.php.net/?id=27215&edit=1