Hi gays, I'm designing a Apache as a reverse proxy using a home made perl script for cookie support.
I needs some advises to design Apache as a reverse proxy for many web apps(~ 20 servers) There will be 500 users using this system 24/7. Each users will have 2 permanents HTTPS connections using chunk encoding and 1 connection using HTTPS keep alive mechanism. Finally Apache will have to process 1000 simultaneous permanent HTTPS connections and 500 HTTPS connections. An other point is that Apache will have to rewrite the HTTP Location header to support HTTP 302 redirection and authenticate users using a perl module to provide a BASIC + cookie authentication. I mades some tests with the Apache ab product on apache v2.2.9 my harware configuration is : # cat /proc/cpuinfo processor : 0 model name : Intel(R) Pentium(R) 4 CPU 2.80GHz processor : 1 model name : Intel(R) Pentium(R) 4 CPU 2.80GHz # top Mem: 2067440k total, 691124k used, 1376316k free, 190704k buffers # apachectl -V Server version: Apache/2.2.9 (Unix) Server built: Jul 8 2008 16:17:39 Server's Module Magic Number: 20051115:15 Server loaded: APR 1.2.7, APR-Util 1.2.7 Compiled using: APR 1.2.7, APR-Util 1.2.7 Architecture: 32-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -----------------httpd.conf----------------- <IfModule prefork.c> MinSpareServers 50 MaxSpareServers 50 StartServers 50 ServerLimit 10000 MaxClients 500 MaxRequestsPerChild 5000 </IfModule> ----------------END ---------------------- I choose MaxClients=500 because it's an estimation of the child process memory usage. there is the calculation : Total_RAM_free MaxClients = --------------------------------------- Max_Process_Size - Shared_RAM_per_Child and i get this values with top on a worker child process PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ DATA COMMAND 9345 daemon 16 0 27540 9868 3660 R 5 0.5 0:00.19 6084 httpd Shared memory per process = ~ 3,5Mb (3660) Memory per Process = 6,084 Mb so I calculate Max Client = 1300 Mb / (6,084 - 3660) = 540 processes, I prefered gaving some memory margin in case of ... Do you agree with this result ? I tests 500 simultaneous connections with a total of 10 000 requests. I aims to test Apache in a heavy load and simulates 500 permanent connections but the result was not very good : Document Path: /uc/favicon.ico Document Length: 1022 bytes Concurrency Level: 500 Time taken for tests: 549.188 seconds Complete requests: 10000 Failed requests: 264 (Connect: 0, Receive: 0, Length: 264, Exceptions: 0) Write errors: 0 Non-2xx responses: 2 Total transferred: 13543827 bytes HTML transferred: 9951006 bytes Requests per second: 18.21 [#/sec] (mean) Time per request: 27459.375 [ms] (mean) Time per request: 54.919 [ms] (mean, across all concurrent requests) Transfer rate: 24.08 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 63 10873 13533.9 9016 130391 Processing: 47 15784 28431.9 9828 321688 Waiting: 0 12616 27897.6 6516 318703 Total: 469 26657 34939.1 19484 341219 Percentage of the requests served within a certain time (ms) 50% 19484 66% 22094 75% 24922 80% 28547 90% 45891 95% 82531 98% 175422 99% 219375 100% 341219 (longest request) So I realize that the average time per request was very high ! Time per request: 27459.375 [ms] Do I need a better harware ?? or is my configuration not optimal ? (I used this doc : http://perl.apache.org/docs/1.0/guide/performance.html#Performance_Tuning_by_Tweaking_Apache_Configuration) Ie : to support fully 1500 processes : 1500* (6,084 - 3660) = 3600 Mb RAM And a last question, how do apache process chunk encoding requests ? is it allowing 1 process per connection ? so for 1000 simultaneous requests it will require 1000 processes ? thanks a lot :) -- Sylvain Beaux --------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: [EMAIL PROTECTED] " from the digest: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]