Changes

Jump to navigation Jump to search
3,153 bytes added ,  11:45, 16 October 2008
no edit summary
If you run your own LAMP server with PHP applications, then please install it. The [[Moodle]] documentation includes information on [http://docs.moodle.org/en/Installing_APC_in_Windows setting up APC]; including testing before and after performance with "[http://httpd.apache.org/docs/2.0/programs/ab.html Apache Bench]"
 
The Cerberus wiki also describes Memcache in addition to APC. Their graphics illustrate the chain of execution for request processing http://wiki.cerb4.com/wiki/Performance
== Installation ==
# Restart Apache
# Use the Apache Bench tool to test performance with and without APC enabled.
 
== Results ==
Here are the results of a simple benchmark. Without APC, the request response times averaged around 600 milliseconds while with APC, they were around 150 milliseconds so APC reduced response times by 75%
[[Image:Http-benchmark-without-apc.png|450px|thumb|right|Without APC]]
[[Image:Http-benchmark-with-apc.png|450px|thumb|right|With APC]]
== Notes ==
APC, aside from speeding up your website, also provides a storage mechanism outside the traditional cookie/session mechanism. So, you could set an application variable or constant and (assuming that the cache is not cleared, etc.) retrieve that value from another context.
 
The graphs were produced using '''ab''' and '''gnuplot''' ab is Apache Bench, a benchmarking and stress-testing tool. Using -g to produce CSV output suitable for feeding to spreadsheets or gnuplot, you can generate the graphs.
<source lang="bash">
ab -g ~/ab-without-apc.csv -n 50 -c 1 http://freephile.com/wiki/index.php/Main_Page
</source>
produces this output:
<pre>
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking freephile.com (be patient).....done
 
 
Server Software: Apache
Server Hostname: freephile.com
Server Port: 80
 
Document Path: /wiki/index.php/Main_Page
Document Length: 15778 bytes
 
Concurrency Level: 1
Time taken for tests: 30.313117 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 815850 bytes
HTML transferred: 788900 bytes
Requests per second: 1.65 [#/sec] (mean)
Time per request: 606.262 [ms] (mean)
Time per request: 606.262 [ms] (mean, across all concurrent requests)
Transfer rate: 26.26 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 1 0.1 1 2
Processing: 515 604 113.4 567 1030
Waiting: 464 546 109.6 513 967
Total: 516 605 113.4 568 1031
 
Percentage of the requests served within a certain time (ms)
50% 568
66% 600
75% 608
80% 644
90% 734
95% 925
98% 1031
99% 1031
100% 1031 (longest request)
</pre>
 
Then, by invoking gnuplot, you can create the graphs:
<pre>
gnuplot> set terminal png
Terminal type set to 'png'
Options are 'nocrop medium '
gnuplot> set output "http-benchmark-with-apc.png"
gnuplot> set xlabel "request"
gnuplot> set ylabel "ms"
gnuplot> plot "/home/greg/ab-with-apc.csv" using 7 with lines title "ctime", \
> "/home/greg/ab-with-apc.csv" using 8 with lines title "dtime", \
> "/home/greg/ab-with-apc.csv" using 9 with lines title "ttime", \
> "/home/greg/ab-with-apc.csv" using 10 with lines title "wait"
gnuplot> set output "http-benchmark-without-apc.png"
gnuplot> plot "/home/greg/ab-without-apc.csv" using 7 with lines title "ctime", \
> "/home/greg/ab-without-apc.csv" using 8 with lines title "dtime", \
> "/home/greg/ab-without-apc.csv" using 9 with lines title "ttime", \
> "/home/greg/ab-without-apc.csv" using 10 with lines title "wait"
</pre>
[[Category:Apache]]
[[Category:PHP]]
[[Category:Wiki]]
[[Category:Sysadmin]]
4,558

edits

Navigation menu