>
> <IfModule peruser.c>
>     # Multiplexer pool
>     MinMultiplexers 10
>     MaxMultiplexers 20
>     Multiplexer nobody nogroup
> #    ProcessorWaitTimeout 2 10
>     ProcessorWaitTimeout 5 20
>
>     # Fork limits
>     ServerLimit 200
>     MaxClients 200
>     MaxRequestsPerChild 1000
>
>     # Processor defaults
>     MinProcessors       15
>     MinSpareProcessors  3
>     MaxProcessors 2000
> #    MaxProcessors 500
>
>     # Timeouts
>     IdleTimeout 60
>     ExpireTimeout 300
> </IfModule>
>   

There's no point in setting the MaxProcessors greater than 
ServerLimit/MaxClients. ServerLimit = global limit of all processes, 
MaxProcessors = limit of worker processes within a single server 
environment.

> The best way to replicate this issue, is just use the peruser config I
> pasted before, then 
> try sending 2000 queries per second with ab, and you'll see what I mean.
You don't need to send 2000 concurrent requests to achieve 2000 req/s. 
Here's an example conf and ab output:

Configuration:
<IfModule peruser.c>
        ServerLimit 250
        MaxClients 250
        MinSpareProcessors 1
        MinProcessors 10
        MaxProcessors 200
        MaxRequestsPerChild 1000
        ExpireTimeout 7200
        IdleTimeout 300
        MinMultiplexers 1
        MaxMultiplexers 50
        MultiplexerIdleTimeout 120
        ProcessorWaitTimeout 10
</IfModule>

$ ab -c 200 -n 100000 http://mytestserver/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking dev.kood.ee (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests


Server Software:        Apache/2.2.13
Server Hostname:        mytestserver
Server Port:            80

Document Path:          /
Document Length:        5043 bytes

Concurrency Level:      200
Time taken for tests:   27.708 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      531205312 bytes
HTML transferred:       504305043 bytes
Requests per second:    3609.02 [#/sec] (mean)
Time per request:       55.417 [ms] (mean)
Time per request:       0.277 [ms] (mean, across all concurrent requests)
Transfer rate:          18721.99 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   17 275.6      1    9014
Processing:     0   36 107.1     33   11308
Waiting:        0   33 106.9     29   11302
Total:          0   53 297.9     36   11308

Percentage of the requests served within a certain time (ms)
  50%     36
  66%     40
  75%     43
  80%     45
  90%     52
  95%     56
  98%     67
  99%     83
 100%  11308 (longest request)


This was done on a virtualized 2x Intel Xeon E5430 2.66GHz.

-- 
Taavi Sannik
DataCode OY


_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

Reply via email to