Finally... This is a first alpha release of the tool. You can download it from http://stason.org/works/modules/Apache-Benchmark-0.1.tar.gz . *** What is it *** The goals of this project: Measuring the performance capabilities of the given server (note that it can be any webserver, not just mod_perl enabled, but it helps :) a. Standard behchmarking suite. Supplied as a part of the sw. This will allow to compare different server versions, since the data under test (benchmark) will be identical. In addition different HW can be benchmarked to find the best. b. User customized (i.e. using the real code used on production server). User will be able to run his own code to get the real capacity and performance figures. The capabilities to be tested are response plus request processing times and process sizes under different loads and server configuration. 2. Creating a framework for the automatic optimal server configuration. Requires production server usage patterns, using pairs of uri/query and relative per cent of this pairs as it happens daily or during specific hours. The more time the code will run the better tuning you will get. The final output is a configuration parameters like MaxClients, MaxServers etc to be pasted into production server configuration file. The first goal is almost completed. The second is not. *** Getting Started *** Read the README file for further instructions. But if you want it easy and have the standard setup where apache sits at /usr/local/apache, just unpack and run ./bin/bench.pl . Depending on the strenth of your machine it might take a few minutes or a few hours to complete. At this point the documentation is scarce, but will be completed once the design is finalized, after you try it and tell me what do you think about it. What's good, what's bad, what and how things should be improved. *** What you get *** This is the output I've got on a very strong machine (relative to mine :) HW: Dual PII 400Mhz 256M RAM SCSI-HD SW: Apache 1.3.12 / mod_perl 1.22 / perl 5.005_03 / Linux (RH6.1) Remember that the actual results are slightly better because currently both the client and the server are running on the same machine. ### Benchmarks Report performed on Fri Apr 21 13:50:26 2000 ========================================================================== Test 1 [ /tmp/bench/tests/registry_vs_handler_heavy/registry_vs_handler_heavy. t ] -------------------------------------------------------------------------- SubTest Conne- Concu- Query AvTime Requests Suc- ctions rrency Length (msec) PerSecond cess -------------------------------------------------------------------------- handler_heavy 1000 10 0 140 70.41 Pass handler_heavy 1000 10 0 141 70.13 Pass handler_heavy 1000 20 0 284 69.39 Pass handler_heavy 1000 20 0 287 68.69 Pass registry_heavy 1000 20 0 288 67.03 Pass registry_heavy 1000 10 0 147 66.88 Pass registry_heavy 1000 20 0 291 66.76 Pass registry_heavy 1000 10 0 148 66.59 Pass handler_heavy 100 20 0 248 64.35 Pass handler_heavy 100 10 0 156 60.75 Pass registry_heavy 100 10 0 150 60.02 Pass registry_heavy 100 20 0 300 58.14 Pass -------------------------------------------------------------------------- Tests descriptions: handler_heavy -- Heavy Perl Handler registry_heavy -- Heavy Registry Script The output sorted by rps, avtime. -------------------------------------------------------------------------- ========================================================================== Test 2 [ /tmp/bench/tests/mod_cgi_vs_mod_perl/mod_cgi_vs_mod_perl.t ] -------------------------------------------------------------------------- SubTest Conne- Concu- Query AvTime Requests Suc- ctions rrency Length (msec) PerSecond cess -------------------------------------------------------------------------- mod_perl 200 5 0 20 225.73 Pass mod_perl 100 5 0 24 189.39 Pass mod_cgi 200 5 0 1365 3.65 Pass mod_cgi 100 5 0 1394 3.52 Pass -------------------------------------------------------------------------- Tests descriptions: mod_cgi -- A script running under mod_cgi mod_perl -- A script running under mod_perl The output sorted by rps, avtime. -------------------------------------------------------------------------- ========================================================================== Test 3 [ /tmp/bench/tests/registry_vs_handler/registry_vs_handler.t ] -------------------------------------------------------------------------- SubTest Conne- Concu- Query AvTime Requests Suc- ctions rrency Length (msec) PerSecond cess -------------------------------------------------------------------------- handler 2000 15 0 23 625.98 Pass handler 5000 15 0 23 625.31 Pass handler 500 5 0 7 612.75 Pass registry 500 15 0 23 602.41 Pass registry 500 5 0 7 591.72 Pass handler 5000 5 0 7 590.11 Pass handler 5000 10 0 15 585.07 Pass handler 500 15 0 24 583.43 Pass registry 2000 5 0 7 580.05 Pass handler 2000 5 0 7 577.03 Pass handler 500 10 0 16 576.70 Pass handler 2000 10 0 15 571.43 Pass registry 500 10 0 13 565.61 Pass registry 5000 5 0 7 556.85 Pass registry 2000 15 0 23 532.91 Pass registry 5000 10 0 17 521.54 Pass registry 2000 10 0 17 521.51 Pass registry 5000 15 0 29 490.87 Pass -------------------------------------------------------------------------- Tests descriptions: registry -- Registry Script handler -- Perl Handler The output sorted by rps, avtime. -------------------------------------------------------------------------- ========================================================================== Test 4 [ /tmp/bench/tests/cgi.pm_vs_apache_request/cgi.pm_vs_apache_request.t ] -------------------------------------------------------------------------- SubTest Conne- Concu- Query AvTime Requests Suc- ctions rrency Length (msec) PerSecond cess -------------------------------------------------------------------------- apache_request 500 5 597 3 1250.00 Pass cgi_pm 500 5 597 3 1225.49 Pass apache_request 500 10 597 7 1213.59 Pass cgi_pm 1000 10 597 7 1152.07 Pass cgi_pm 500 10 597 7 1131.22 Pass cgi_pm 5000 10 597 7 1131.22 Pass apache_request 1000 5 597 2 1090.51 Pass cgi_pm 5000 5 597 3 1087.67 Pass cgi_pm 1000 5 597 2 1051.52 Pass apache_request 5000 10 597 7 989.32 Pass apache_request 1000 10 597 8 973.71 Pass apache_request 5000 5 597 3 963.58 Pass apache_request 500 5 205 8 512.82 Pass apache_request 500 5 25 8 509.68 Pass apache_request 500 10 105 18 504.03 Pass apache_request 500 10 205 18 503.52 Pass apache_request 5000 5 25 8 501.40 Pass apache_request 1000 5 25 9 497.51 Pass apache_request 1000 5 105 4 489.72 Pass apache_request 1000 5 205 7 477.10 Pass apache_request 5000 5 205 8 475.92 Pass apache_request 5000 10 105 19 475.42 Pass apache_request 5000 5 105 9 469.31 Pass apache_request 1000 10 105 16 468.60 Pass apache_request 1000 10 205 18 466.20 Pass apache_request 5000 10 25 20 464.68 Pass apache_request 500 5 105 9 460.83 Pass apache_request 5000 10 205 20 458.67 Pass apache_request 1000 10 25 22 430.66 Pass apache_request 500 10 25 22 417.01 Pass cgi_pm 500 10 25 27 352.11 Pass cgi_pm 500 10 205 28 341.53 Pass cgi_pm 500 5 105 13 338.29 Pass cgi_pm 1000 10 25 25 334.56 Pass cgi_pm 5000 10 25 28 333.91 Pass cgi_pm 5000 5 105 14 325.61 Pass cgi_pm 500 5 205 14 324.04 Pass cgi_pm 5000 10 105 29 320.94 Pass cgi_pm 1000 5 205 9 319.18 Pass cgi_pm 5000 5 205 14 317.22 Pass cgi_pm 1000 5 105 12 317.16 Pass cgi_pm 5000 10 205 30 317.10 Pass cgi_pm 1000 10 205 28 316.06 Pass cgi_pm 5000 5 25 14 315.64 Pass cgi_pm 1000 10 105 28 312.21 Pass cgi_pm 1000 5 25 15 310.75 Pass cgi_pm 500 10 105 26 298.33 Pass apache_request 500 10 337 36 258.00 Pass apache_request 5000 10 337 37 257.86 Pass apache_request 5000 5 337 18 256.08 Pass apache_request 1000 10 337 35 256.02 Pass apache_request 1000 5 337 18 254.91 Pass apache_request 500 5 337 18 253.42 Pass cgi_pm 500 5 25 20 219.68 Pass cgi_pm 5000 5 337 35 135.02 Pass cgi_pm 1000 10 337 72 133.87 Pass cgi_pm 5000 10 337 73 133.60 Pass cgi_pm 500 10 337 68 133.12 Pass cgi_pm 1000 5 337 37 129.27 Pass cgi_pm 500 5 337 38 128.17 Pass -------------------------------------------------------------------------- Tests descriptions: apache_request -- Processing Forms Input with Apache::Request cgi_pm -- Processing Forms Input with CGI.pm The output sorted by rps, avtime. -------------------------------------------------------------------------- ______________________________________________________________________ Stas Bekman | JAm_pH -- Just Another mod_perl Hacker http://stason.org/ | mod_perl Guide http://perl.apache.org/guide mailto:[EMAIL PROTECTED] | http://perl.org http://stason.org/TULARC/ http://singlesheaven.com| http://perlmonth.com http://sourcegarden.org ----------------------------------------------------------------------