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]

Reply via email to