Seema
1.  I was wondering, for simplicity sake, should we not compile the 
apache httpd in the same way for both MPM models. This would allow us to 
use same configure script and change only line '--with-mpm' depending on 
which model we build. This way, going forward, if we need to add another 
MPM support (say Solaris specific), we don't introduce any different 
compilation options.
 
2. In your prototype, did you explore the need to bundle apxs separately 
(one for prefork and worker)  ?  Say a customer wanting to compile his 
third party apache module - foo , does he need to know what is the MPM 
model currently configured ?  I am hoping that this is transparent to 
the customer and can simply use apxs irrespective of the MPM mode. But, 
just wanted to ensure that we took this issue into account.

thanks
sriram

Seema Alevoor wrote:
> Hi,
>
> I tried prototyping this layout structure with multiple MPMs using sfw build 
> environment.
> I modified sfw build scripts to build and install prefork, worker mpm 
> binaries under usr/apache2/bin directory.
> First I built apr and apr-util libraries with --enable-threads option and 
> then built prefork followed by worker.
> I have used different configure options for prefork and worker.
> All the required modules are created during prefork mpm build (existing way). 
>  For building worker mpm,
> I did not include the extra module options used for prefork since only the 
> 'httpd' binary from the worker build is copied to
> usr/apache2/bin directory as httpd.worker. There is no need to build these 
> modules again.
> All the modules that are generated during prefork build get installed under 
> usr/apache2/modules
> (I have changed the directory name from "libexec" to "modules" which is more 
> intuitive).
>
> I tested these 2 co-located mpms along with the prefork mpm (part of SXDE 
> installation) located under /usr/apache2.
> First, I used torture script.  Then I ran Apache Test suite. I have listed 
> the result of these runs.
> Initially, some of the tests of Apache Test suite which passed for prefork 
> mpm failed (tests were hanging) for worker mpm.
> It was failing in cgi module. By default, prefork mpm uses mod_cgi and worker 
> mpm uses mod_cgid. My build didn't have mod_cgid.
> When I built and used cgid module, these tests passed for worker mpm and got 
> consistent results for co-located mpms and existing prefork mpm.
>
> I  have listed below, the configuration options used for building prefork and 
> mpm.
>
> prefork:
>              ./configure --prefix=/usr/apache2 \
>                  --enable-layout=Solaris-Apache2 \
>                  --enable-mods-shared=all \
>                  --enable-so \
>                  --enable-suexec \
>                  --enable-proxy \
>                  --enable-proxy-connect \
>                  --enable-proxy-ftp \
>                  --enable-proxy-http \
>                  --enable-proxy-ajp \
>                  --enable-proxy-balancer \
>                  --enable-file-cache \
>                  --enable-disk-cache \
>                  --enable-cache \
>                  --enable-mem-cache \
>                  --enable-deflate \
>                  --enable-cgi \
>                  --enable-cgid \
>                  --enable-ssl \
>                  --with-ssl=/usr/sfw \
>                  
> --with-apr=$(SRC)/cmd/apache2/httpd-prefork/$(VER)/srclib/apr \
>                  
> --with-apr-util=$(SRC)/cmd/apache2/httpd-prefork/$(VER)/srclib/apr-util \
>                  --with-mpm=prefork)
>
> worker:
>              ./configure --prefix=/usr/apache2 \
>                  --enable-layout=Solaris-Apache2 \
>                  --enable-mods-shared=all \
>                  --enable-so \
>                  --with-ssl=/usr/sfw \
>                  
> --with-apr=$(SRC)/cmd/apache2/httpd-prefork/$(VER)/srclib/apr \
>                  
> --with-apr-util=$(SRC)/cmd/apache2/httpd-prefork/$(VER)/srclib/apr-util \
>                  --with-mpm=worker)
>
>
> Test Resutls:
>
> A) torture.pl script runs:
>
> 1) Running torture on co-located worker mpm
>
> output:
> -------
>  > ./torture.pl -c 3000 http://localhost:3000/index.html
> ** torture.pl version 1.05 starting at Wed Aug  8 01:43:47 2007
> Transactions:           3000
> Elapsed time:           43.836 sec
> Bytes Transferred:      72000 bytes
> Response Time:          15.00 sec
> Transaction Rate:       68.44 trans/sec
> Throughput:             1642.50 bytes/sec
> Concurrency:            1026.7
> Status Code 200:        3000
> ** torture.pl version 1.05 ending at Wed Aug  8 01:45:03 2007
>
>
> 2) Running torture on co-located prefork mpm
>
> output:
> -------
>  > ./torture.pl -c 1000 http://localhost:3000/index.html
> ** torture.pl version 1.05 starting at Wed Aug  8 02:04:06 2007
> Transactions:           1000
> Elapsed time:           171.426 sec
> Bytes Transferred:      24000 bytes
> Response Time:          65.32 sec
> Transaction Rate:       5.83 trans/sec
> Throughput:             140.00 bytes/sec
> Concurrency:            381.1
> Status Code 200:        1000
> ** torture.pl version 1.05 ending at Wed Aug  8 02:07:07 2007
>
>  > ./torture.pl -c 2000 http://localhost:3000/index.html
> ** torture.pl version 1.05 starting at Wed Aug  8 01:55:07 2007
> Transactions:           2000
> Elapsed time:           221.519 sec
> Bytes Transferred:      38784 bytes
> Response Time:          108.84 sec
> Transaction Rate:       9.03 trans/sec
> Throughput:             175.08 bytes/sec
> Concurrency:            982.7
> Status Code 200:        1616
> Status Code 503:        384
> ** torture.pl version 1.05 ending at Wed Aug  8 01:59:10 2007
>
>
>
> 2) Running torture on original (the one that gets installed as part of OS 
> installation under /usr/apache2) prefork mpm
>
> output:
> -------
>  > ./torture.pl -c 1000 http://localhost:3000/index.html
> ** torture.pl version 1.05 starting at Thu Aug  2 03:25:22 2007
> Transactions:           1000
> Elapsed time:           168.460 sec
> Bytes Transferred:      44000 bytes
> Response Time:          57.37 sec
> Transaction Rate:       5.94 trans/sec
> Throughput:             261.19 bytes/sec
> Concurrency:            340.6
> Status Code 200:        1000
> ** torture.pl version 1.05 ending at Thu Aug  2 03:28:21 2007
>
> ./torture.pl -c 2000 http://localhost:3000/index.html
> ** torture.pl version 1.05 starting at Thu Aug  2 03:20:29 2007
> Transactions:           2000
> Elapsed time:           223.134 sec
> Bytes Transferred:      69916 bytes
> Response Time:          110.50 sec
> Transaction Rate:       8.96 trans/sec
> Throughput:             313.34 bytes/sec
> Concurrency:            990.4
> Status Code 200:        1589
> Status Code 503:        411
> ** torture.pl version 1.05 ending at Thu Aug  2 03:24:33 2007
>
>
>
> B) Apache Test suite runs: on co-located prefork, worker and original (the 
> one that gets installed as part of OS installation under /usr/apache2) 
> prefork mpms :
>
> Failed Test                Stat Wstat Total Fail  Failed  List of Failed
> -------------------------------------------------------------------------------
> t/apache/errordoc.t                      14    6  42.86%  2 4 6 10 12 14
> t/modules/cache.t                         3    3 100.00%  1-3
> t/modules/include.t                      86    6   6.98%  4-6 47-48 53
> t/modules/proxy.t                        13   12  92.31%  1-8 10-13
> t/modules/proxy_balancer.t                1    1 100.00%  1
> t/modules/vhost_alias.t                   8    8 100.00%  1-8
> t/protocol/nntp-like.t      255 65280     5    8 160.00%  2-5
> t/security/CVE-2006-5752.t                2    1  50.00%  2
> 11 tests and 14 subtests skipped.
> Failed 8/66 test scripts, 87.88% okay. 41/2421 subtests failed, 98.31% okay.
>
>
>
>
> The modified part of the layout looks like this:
>
>       proto/root_i386/usr/apache2/bin/httpd.worker
>       proto/root_i386/usr/apache2/bin/httpd
>       proto/root_i386/usr/apache2/bin/apr-1-config
>       proto/root_i386/usr/apache2/bin/apu-1-config
>       proto/root_i386/usr/apache2/bin/htpasswd
>       proto/root_i386/usr/apache2/bin/htdigest
>       proto/root_i386/usr/apache2/bin/rotatelogs
>       proto/root_i386/usr/apache2/bin/logresolve
>       proto/root_i386/usr/apache2/bin/ab
>       proto/root_i386/usr/apache2/bin/checkgid
>       proto/root_i386/usr/apache2/bin/htdbm
>       proto/root_i386/usr/apache2/bin/htcacheclean
>       proto/root_i386/usr/apache2/bin/httxt2dbm
>       proto/root_i386/usr/apache2/bin/apxs
>       proto/root_i386/usr/apache2/bin/apachectl
>       proto/root_i386/usr/apache2/bin/dbmmanage
>       proto/root_i386/usr/apache2/bin/envvars-std
>       proto/root_i386/usr/apache2/bin/envvars
>       proto/root_i386/usr/apache2/bin/suexec.disabled
>       proto/root_i386/usr/apache2/modules
>       proto/root_i386/usr/apache2/modules/mod_auth_gss.so
>       proto/root_i386/usr/apache2/modules/mod_authn_file.so
>       proto/root_i386/usr/apache2/modules/mod_authn_dbm.so
>       proto/root_i386/usr/apache2/modules/mod_authn_anon.so
>       proto/root_i386/usr/apache2/modules/mod_authn_dbd.so
>       proto/root_i386/usr/apache2/modules/mod_authn_default.so
>       proto/root_i386/usr/apache2/modules/mod_authz_host.so
>       proto/root_i386/usr/apache2/modules/mod_authz_groupfile.so
>       proto/root_i386/usr/apache2/modules/mod_authz_user.so
>       proto/root_i386/usr/apache2/modules/mod_authz_dbm.so
>       proto/root_i386/usr/apache2/modules/mod_authz_owner.so
>       proto/root_i386/usr/apache2/modules/mod_authz_default.so
>       proto/root_i386/usr/apache2/modules/mod_auth_basic.so
>       proto/root_i386/usr/apache2/modules/mod_auth_digest.so
>       proto/root_i386/usr/apache2/modules/mod_file_cache.so
>       proto/root_i386/usr/apache2/modules/mod_cache.so
>       proto/root_i386/usr/apache2/modules/mod_disk_cache.so
>       proto/root_i386/usr/apache2/modules/mod_mem_cache.so
>       proto/root_i386/usr/apache2/modules/mod_dbd.so
>       proto/root_i386/usr/apache2/modules/mod_dumpio.so
>       proto/root_i386/usr/apache2/modules/mod_ext_filter.so
>       proto/root_i386/usr/apache2/modules/mod_include.so
>       proto/root_i386/usr/apache2/modules/mod_filter.so
>       proto/root_i386/usr/apache2/modules/mod_deflate.so
>       proto/root_i386/usr/apache2/modules/mod_log_config.so
>       proto/root_i386/usr/apache2/modules/mod_log_forensic.so
>       
>
>
> Please share your thoughts on this new layout & build options.
>
>
> Thanks and Regards,
> Seema.
>
>
> Sriram Natarajan wrote:
>   
>> Hi
>>   I just posted my thoughts on as to how Apache 2.2.4 file layout could 
>> look so as to support multiple MPM support as part of our SAMP stack 
>> effort within SXDE. I would very much appreciate, if you could take a 
>> moment to review this proposal and let us know your concerns / suggestions.
>>
>> Here is the url
>> http://www.opensolaris.org/jive/thread.jspa?threadID=36272
>>
>>
>> Thanks in advance
>> sriram
>> _______________________________________________
>> webstack-discuss mailing list
>> webstack-discuss at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss
>>     
> _______________________________________________
> webstack-discuss mailing list
> webstack-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss
>   

Reply via email to