Ideal zum Benchmarken von Scripten ist Apache Bench, welches beim Apache Webserver dabei ist und Traffic simulieren kann.
Hier als Beispiel ein Shootout zwischen meinen CMS System vs. PHP Nuke:
[quote][root@msi logs]#
ab -c 500 -t 30 http://localhost/phpnuke/This is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/Copyright (c) 1998-2002 The Apache Software Foundation,
http://www.apache.org/ Benchmarking localhost (be patient)
Finished 97 requests
Server Software: Apache/2.0.44
Server Hostname: localhost
Server Port: 80
Document Path: /phpnuke/
Document Length: 20688 bytes
Concurrency Level: 500
Time taken for tests: 30.520346 seconds
Complete requests: 97
Failed requests: 0
Write errors: 0
Non-2xx responses: 97
Total transferred: 2939244 bytes
HTML transferred: 2865800 bytes
Requests per second: 3.18 [#/sec] (mean)
Time per request: 157321.370 [ms] (mean)
Time per request: 314.643 [ms] (mean, across all concurrent requests)
Transfer rate: 94.04 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 31 312.5 0 3078
Processing: 12215 15860 2497.9 15447 18465
Waiting: 6183 12991 3786.5 15437 18441
Total: 12215 15891 2511.3 15447 18465
Percentage of the requests served within a certain time (ms)
50% 15447
66% 18464
75% 18465
80% 18465
90% 18465
95% 18465
98% 18465
99% 18465
100% 18465 (longest request)
[root@msi logs]#
ab -c 500 -t 30 http://localhost/st/This is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/Copyright (c) 1998-2002 The Apache Software Foundation,
http://www.apache.org/ Benchmarking localhost (be patient)
Finished 792 requests
Server Software: Apache/2.0.44
Server Hostname: localhost
Server Port: 80
Document Path: /st/
Document Length: 53376 bytes
Concurrency Level: 500
Time taken for tests: 38.131096 seconds
Complete requests: 792
Failed requests: 0
Write errors: 0
Total transferred: 42533786 bytes
HTML transferred: 42380544 bytes
Requests per second: 20.77 [#/sec] (mean)
Time per request: 24072.662 [ms] (mean)
Time per request: 48.145 [ms] (mean, across all concurrent requests)
Transfer rate: 1089.29 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 28 308.3 0 4670
Processing: 9737 15330 3499.8 15632 22876
Waiting: 1851 8322 4531.4 7697 15644
Total: 9751 15359 3495.5 15632 22876
Percentage of the requests served within a certain time (ms)
50% 15632
66% 15679
75% 16970
80% 18634
90% 19967
95% 22749
98% 22875
99% 22876
100% 22876 (longest request)[/quote]
Zum Syntax: ab -c 500 -t 30
http://localhost/st/Damit werden 500 gleichzeitige Anfragen an
http://localhost/st/ 30 Sekunden lang geschickt. Ich würde nicht über 500 gehen, da der Server dann möglicherweise komplett überlastet und auf keine Anfrage mehr antwortet. Ebenfalls würde ich Apache Bench nicht auf echten (Produktiven) Webserver einsetzten da während des Benchmarks zweistelliger Serverload Werte erreicht werden können.
Beim Ergebnis gibt es zwei wichtige Werte:
1) Finished XXX requests
Zeigt an wieviel Anfragen innerhalb der 30 Sekunden beantwortet wurden
2) Requests per second: XX.XX [#/sec] (mean)
Zeigt die Anfragen pro Sekunden an.
Bei beiden Werten gilt, um so höher um so besser. Im großen und ganzen ist Apache Bench ein netter Stresstest für Script und Server