Schrift
[thread]3195[/thread]

mod_perl2 total bekloppter benchmark

Leser: 1


<< >> 9 Einträge, 1 Seite
Froschpopo
 2006-03-02 06:24
#29960 #29960
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Von wegen schlechte Datenstrukturen.
Hier mein getestetes Script:
Code: (dl )
1
2
3
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "hallo";


Hier sind die Benchmarks mit folgender Einbindung in der httpd.conf:
Code: (dl )
1
2
3
4
5
<FilesMatch "hallo\.pl$">
    SetHandler perl-script
    PerlHandler ModPerl::Registry
    Options +ExecCGI
</FilesMatch>

ERGIBT:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Server Software:        Apache/2.0.53
Server Hostname:        localhost
Server Port:            80

Document Path:          /cgi-bin/hallo.pl
Document Length:        29 bytes

Concurrency Level:      5
Time taken for tests:   0.643215 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      17400 bytes
HTML transferred:       2900 bytes
Requests per second:    155.47 [#/sec] (mean)
Time per request:       32.161 [ms] (mean)
Time per request:       6.432 [ms] (mean, across all concurrent requests)
Transfer rate:          24.88 [Kbytes/sec] received

Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:        8   16   3.7     18      23
Processing:     7   14   8.7     12      91
Waiting:        7   13   8.7     12      90
Total:         18   30   9.2     30     112

Percentage of the requests served within a certain time (ms)
 50%     30
 66%     31
 75%     32
 80%     33
 90%     34
 95%     38
 98%     48
 99%    112
100%    112 (longest request)


Jetzt OHNE Einbindung von modperl:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Server Software:        Apache/2.0.53
Server Hostname:        localhost
Server Port:            80

Document Path:          /cgi-bin/hallo.pl
Document Length:        29 bytes

Concurrency Level:      5
Time taken for tests:   0.562186 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      17400 bytes
HTML transferred:       2900 bytes
Requests per second:    177.88 [#/sec] (mean)
Time per request:       28.109 [ms] (mean)
Time per request:       5.622 [ms] (mean, across all concurrent requests)
Transfer rate:          28.46 [Kbytes/sec] received

Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:       10   14   1.9     15      19
Processing:     7   12   2.7     12      21
Waiting:        6   11   2.7     12      21
Total:         18   27   2.5     27      37

Percentage of the requests served within a certain time (ms)
 50%     27
 66%     28
 75%     28
 80%     29
 90%     31
 95%     31
 98%     34
 99%     37
100%     37 (longest request)


Meine Frage: warum ist das einfachste script der Welt MIT modperl fast doppelt so langsam wie ohne modperl?
Welchen Sinn erfüllt denn dann modperl überhaupt?

Ich habe folgendes Bench genutzt:
ab2 -n 100 -c 5 http://localhost/cgi-bin/script.pl\n\n

<!--EDIT|Froschpopo|1141274638-->
renee
 2006-03-02 12:09
#29961 #29961
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hey, komm mal wieder runter! Ich habe nicht behauptet, dass Du eine schlechte Datenstruktur verwendest, das war eine Frage/Idee woran es liegen könnte. Du hättest die Benchmarks auch in den anderen Thread packen können. Es geht ja immer noch um das gleiche Problem...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2006-03-02 15:16
#29962 #29962
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
gut, ich werde es mir merken. Aber wie kommen wir jetzt weiter? Liegt es vielleicht an der Einbindung in der httpd.conf
Froschpopo
 2006-03-02 18:39
#29963 #29963
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
und wie sind eure tests verlaufen?
Froschpopo
 2006-03-02 23:55
#29964 #29964
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
also ich habe jetzt eigentlich folgende beiden dinge verglichen:

MIT MODPERL:
Requests per second: 155.47 [#/sec] (mean)
100% 112 (longest request)

OHNE MODPERL
100% 37 (longest request)
Requests per second: 177.88 [#/sec] (mean)

ich werd daraus einfach nicht schlau!
vergleicht doch mal "longest request" miteinander. Warum ist modperl bei den anfragen schneller, braucht aber allgemein länger für alle?
Wo ist denn da die Logik?
ptk
 2006-03-03 00:41
#29965 #29965
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Anscheinend kann man der Ausgabe von ab nicht blind vertrauen. Hier ein Beispiel mit Apache 1.3. hallo.pl ist ein reiner mod_perl-Handler, hallo2.pl ist ein Apache::Registry-Skript, hallo3.pl ist ein normales CGI-Skript. Die Ergebnisse variieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ for i in hallo hallo2 hallo3; do echo -n "$i: "; ab -q -n 1000 -c 10 http://localhost/$i.pl|grep "Requests per"; done
hallo: Requests per second: 639.46 [#/sec] (mean)
hallo2: Requests per second: 440.15 [#/sec] (mean)
hallo3: Requests per second: 437.97 [#/sec] (mean)

$ for i in hallo hallo2 hallo3; do echo -n "$i: "; ab -q -n 1000 -c 10 http://localhost/$i.pl|grep "Requests per"; done
hallo: Requests per second: 1676.77 [#/sec] (mean)
hallo2: Requests per second: 933.17 [#/sec] (mean)
hallo3: Requests per second: 463.16 [#/sec] (mean)

$ for i in hallo hallo2 hallo3; do echo -n "$i: "; ab -q -n 1000 -c 10 http://localhost/$i.pl|grep "Requests per"; done
hallo: Requests per second: 547.29 [#/sec] (mean)
hallo2: Requests per second: 436.82 [#/sec] (mean)
hallo3: Requests per second: 374.33 [#/sec] (mean)

$ for i in hallo hallo2 hallo3; do echo -n "$i: "; ab -q -n 1000 -c 10 http://localhost/$i.pl|grep "Requests per"; done
hallo: Requests per second: 444.90 [#/sec] (mean)
hallo2: Requests per second: 714.87 [#/sec] (mean)
hallo3: Requests per second: 379.99 [#/sec] (mean)

Aber wenigstens meinstens so, wie erwartet (mod_perl schneller als Apache::Registry schneller als CGI).
Froschpopo
 2006-03-03 00:49
#29966 #29966
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also modperl war ja bei mir auch einigermaßen schneller! Aber was mich verwirrt ist das "longest time" (siehe mein letzter post). Wieso zieht sich der längste request so dermaßen in die länge?

mit modperl: 100% 112 (longest request)
ohne modperl nur: 100% 37 (longest request)

was soll das?
Das bedeutet nämlich, dass nur die ersten 1-20 requests wirklich schnell sind. alle weiteren sind dann sogar langsamer als ohne modperl!
Kann es sein, dass er so lang braucht das script nach zu laden?
ptk
 2006-03-03 11:15
#29967 #29967
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mein Benchmark zeigt ja große Unterschiede sogar in der durchschnittlichen Zeit an. Es sieht aus, als ob der Benchmark sensibel ist gegen andere Prozesse, die sich vielleicht auch gerade etwas CPU greifen. Außerdem benötigt "ab" selbst auch CPU und verfälscht dadurch das Ergebnis. Oder es kann sein, dass mit mod_perl zu viel Memory verbraucht wird, siehe den anderen Thread.
Froschpopo
 2006-03-05 22:28
#29968 #29968
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich habs :) MaxClients war einfach nur 10 zu hoch! Habs jetzt auf 20 reduziert und plötzlich rennt er richtig gut :)
<< >> 9 Einträge, 1 Seite



View all threads created 2006-03-02 06:24.