[peruser] Peruser patch (v8)

Marcelo Coelho marcelo at tpn.com.br
Fri Jan 7 14:31:10 MST 2011


Hello!

Many changes. Here it is a new patch (v8).

Patch from RC2:
http://opensource.mco2.net/download/apache/peruser/peruser-rc2-to-rc3-v8.patch

Full patch from vanilla Apache 2.2.17:
http://opensource.mco2.net/download/apache/peruser/peruser-rc3-full-v8.patch

Changes (from RC2):

* (v8) Bug fixed: apachectl graceful now is more stable, like RC2 version
* (v8) Bug fixed: fixed some segfaults (thank you Dave Steinberg for sending your core dumps)
* (v8) Bug fixed: server dies with infinite loop script, reported by Taavi Sannik
* (v8) Bug fixed: "long lost child" error, reported by Taavi Sannik
* (v8) Performance: update_all_counters() rewritten without malloc() and free()
* (v7) Bug fixed: multiplexers now can clone a processor child if all workers are busy.
* (v6) Bug fixed: apachectl graceful now working properly, without "long lost child" errors
* (v5) Not released to public
* (v4) Code cleanup
* (v4) Performance: childs are started in ~25ms, 40 times faster than in RC2 (~1000ms)
* (v4) Bug fixed: now checking if total_processors is 1 (first access) to start StartProcessors
* (v3) Performance: new child type (CHILD_TYPE_RESERVED) to avoid collision (2 childs trying to get the same free slot)
* (v3) Bug fixed: fixed a bug in RC2, wait_timeout was always 0, never sleeping to wait for new workers.
* (v2) Performance: StartProcessors, new configuration directive to control the number of child processors per vhost at startup
* (v2) Performance: childs are started in ~50ms, 20 times faster than in RC2 (~1000ms)
* (v1) Performance: faster to lookup for free slots (this is important on busy servers, with many virtual hosts)
* (v1) Performance: faster to count processors, one single loop counts all processors
* (v1) Bug fixed: bug when MinSpareProcessors is set to 0 (now all workers processes are killed when idle_timeout is reached)
* (v1) Bug fixed: Free-up slots when a WORKER or PROCESSOR unexpectedly dies


Some stress test:

# ab -n 100000 -c 100 -k http://SERVER/
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 SERVER (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.17
Server Hostname:        SERVER
Server Port:            80

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      100
Time taken for tests:   2.722 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99055
Total transferred:      33060116 bytes
HTML transferred:       1200060 bytes
Requests per second:    36734.39 [#/sec] (mean)
Time per request:       2.722 [ms] (mean)
Time per request:       0.027 [ms] (mean, across all concurrent requests)
Transfer rate:          11859.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       7
Processing:     0    3   0.7      2      15
Waiting:        0    3   0.6      2      15
Total:          0    3   0.9      2      16
WARNING: The median and mean for the processing time are not within a normal deviation
        These results are probably not that reliable.
WARNING: The median and mean for the waiting time are not within a normal deviation
        These results are probably not that reliable.
WARNING: The median and mean for the total time are not within a normal deviation
        These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
  50%      2
  66%      3
  75%      3
  80%      3
  90%      3
  95%      5
  98%      5
  99%      8

Regards,

--
Marcelo Coelho
marcelo at mco2.com.br





More information about the Peruser mailing list