Hello,
I am part of a small group of engineers that is looking in to
replacing our current proprietary template technology. We are
looking at mod_perl with some template layers and PHP. I have been
using Embperl since the early days (before 0.20-beta) and would love
to use it, but the performance numbers are just not there. Here is
what the group has found:
Test Server:
P3 800Mhz
512Meg Ram
FreeBSD 4.3
Apache 1.3.19 (Complied options listed below)
PPT: Proprietary template technology DSO
PHP: PHP 4.1.2 DSO with php_accelerator
ASP: mod_perl 1.26 DSO with Apache::ASP 2.31
MAS: mod_perl 1.26 DSO with HTML::Mason 1.04
EMB: mod_perl 1.26 DSO with HTML::Embperl 1.3.4
SSP: mod_perl 1.26 DSO with SimpleASP
SimpleASP is a very simple perl module that handles ASP syntax (it
was written in a day). It turns the page into a function call,
printing anything not between <% %> tags and evaluates the stuff that
is.
We ran 6 different test configurations. Only loading the testing
DSO's. Each of the mod_perl configurations had a separate startup.pl
file that loaded the standard Apache packages, the testing template
package and the 2 perl packages needed for the test page (See below).
Each test requested a page written in the native language which was
about 33K and about 41K after rendering.
The test runs were as follows.
Server Warm up: 10,000 requests at 25 concurrent connections
Test 1: 20,000 requests at 25 concurrent connections
Test 2: 20,000 requests at 50 concurrent connections
Test 3: 20,000 requests at 75 concurrent connections
Test 4: 20,000 requests at 100 concurrent connections
Test 5: 20,000 requests at 150 concurrent connections
Test 6: 20,000 requests at 200 concurrent connections
Test 7: 20,000 requests at 300 concurrent connections
Test 8: 20,000 requests at 400 concurrent connections
Here are the results:
025 050 075 100 150 200 300 400
---------------------------------------------
PTT: 059 117 172 207 220 208 199 200
PHP: 060 118 173 211 235 252 249 241
ASP: 039 042 051 ** *** *** *** ***
MAS: 058 102 119 121 116 108 * ***
EMB: 040 040 039 039 028 026 * ***
SSP: 060 118 172 218 246 268 277 277
---------------------------------------------
MAX: 062 125 187 250 294 294 294 294
MAX: This is the max possible. There is a 400ms delay in one of the
"PROPRIETARY TEST MODULE" which simulates a delay of back end servers
that would supply data. Max of 294 is the calculated max due to a
network bandwidth limit.
* was not run, don't know why
** test skipped because melted the box and needed a reboot
*** test skipped because last test failed
Any idea on what is going on and why the Embperl numbers are so low?
I added debugging to make sure the pages were being cached and after
the warm up the all showed 100% cache hits. The surprise to the
group was the SPP numbers and how it out performed them all.
Side Note: I wanted to try to use Embperl 2.0, but I couldn't get it
to compile and didn't have the time to spend on it.
Let me know if you need any more info or have any ideas on what to
try. I still have the test machines setup and can tweak a few things
and run the tests again.
Thanks,
Brian
--------------------------------------------------
Other Data:
Trust me all changes or compiled in modules that are listed as
PROPRIETARY do no effect the server performance in a bad way.
Server compiled with....
-D EAPI
-D HAVE_MMAP
-D USE_MMAP_SCOREBOARD
-D USE_MMAP_FILES
-D NO_LINGCLOSE
-D USE_FLOCK_SERIALIZED_ACCEPT
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D <PROPRIETARY>
-D GZIP
-D HTTPD_ROOT="<REMOVED>"
-D SUEXEC_BIN="<REMOVED>"
-D DEFAULT_PIDLOG="<REMOVED>"
-D DEFAULT_SCOREBOARD="<REMOVED>"
-D DEFAULT_LOCKFILE="<REMOVED>"
-D DEFAULT_XFERLOG="<REMOVED>"
-D DEFAULT_ERRORLOG="<REMOVED>"
-D TYPES_CONFIG_FILE="<REMOVED>"
-D SERVER_CONFIG_FILE="<REMOVED>"
-D ACCESS_CONFIG_FILE="<REMOVED>"
-D RESOURCE_CONFIG_FILE="<REMOVED>"
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_info.c
mod_status.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_alias.c
mod_rewrite.c
mod_access.c
mod_auth.c
mod_expires.c
mod_headers.c
mod_so.c
mod_setenvif.c
mod_<PROPRIETARY>.c
mod_<PROPRIETARY>.c
mod_<PROPRIETARY>.c
mod_<PROPRIETARY>.c
mod_<PROPRIETARY>.c
mod_<PROPRIETARY>.c
mod_ssl.c
server.conf: Everything else was set to Apache defaults but:
Port 80
HostnameLookups Off
KeepAlive Off
KeepAliveTimeout 0
test.conf
---------------------------------------------
LoadModule perl_module <REMOVED>libperl.so
PerlSetupEnv Off
PerlTaintCheck Off
PerlWarn Off
SetEnv EMBPERL_DEBUG 0
SetEnv EMBPERL_OPTIONS 16
SetEnv EMBPERL_ESCMODE 0
SetEnv EMBPERL_LOG /tmp/embperl.log
PerlRequire "<REMOVE>/conf.test/startup-embperl.pl"
<Files "*.emb">
SetHandler "perl-script"
PerlHandler HTML::Embperl
DefaultType text/html
</Files>
starup.pl Embperl Session management DISABLED becuase I don't have
the Apache::SessionX.pm installed
---------------------------------------------
#!/usr/bin/perl
use Apache;
use Apache::Status;
use Apache::Registry;
use Apache::Constants;
use HTML::Embperl;
use lib '<REMOVED>';
use <PROPRIETARY TEST MODULE>;
use <PROPRIETARY TEST MODULE>;
1;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]