Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3133[/thread]

mod perl langsamer als perl script?



<< >> 6 Einträge, 1 Seite
Gast Gast
 2005-03-03 08:20
#30985 #30985
Hallo,
ich habe eine Anwendung mit cgi-Script und "normalem" ausgelagertem Model.
Nun habe ich es als Mod perl Anwendung umgeschrieben.
Leider ist die mod_perl Variante langsamer.

Hier einige Vergleichswerte bei gleicher Aktion:
mod_perl: 0,26 sec. script: 0,08 sec.
mod_perl: 1,13 sec. script: 0,67 sec.
mod_perl: 0,13 sec. script: 0,04 sec.

Die Werte sollten doch eigentlich genau anders herum sein.

Suse 9.1, Apache 2.0.51; perl 5.8.4, mod_perl 1.9913

Einbindung httpd.conf
PerlRequire            /...../FPHandler.pm
SetHandler             perl-script
PerlResponseHandler    FPHandler
PerlOptions            +ParseHeaders

Modul:
package FPHandler;
use strict;
use vars qw(@ISA);
use Apache::RequestRec;

use Apache::Const;
Apache::Const->import(-compile => qw(OK DECLINED));

sub handler {
....
return Apache::OK();
}

Woran könnte das liegen, ich habe so keine rechte Idee wo man anfangen sollte zu suchen.
Hat jemand eine Idee?
Gruß Robert
Taulmarill
 2005-03-03 11:23
#30986 #30986
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wie und womit hast du das gebenchmarkt?

bedenke, dass mod_perl beim ersten aufruf eines handlers diesen auch erst mal laden muss und das warscheinlich auch noch für jeden child process. ändern sich die zeiten, nachdem du den handler nen paar mal abgefragt hast?

benutzt du für deine cgi scripte evtl. fast-cgi?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
wwwfun
 2005-03-03 13:13
#30987 #30987
User since
2005-03-03
2 Artikel
BenutzerIn
[default_avatar]
Ich benutze zur Zeitmessung das Modul Time::HiRes mit dem man ja im millisekunden Bereich messen kann.
Ich kann es auch sehen, bei der einen Seite wo der Unterschied eine halbe Sekunde ist, sieht man es im direkten Vergleich mit zwei Fenster.
Die Ergebnisse sind beliebig wiederholbar und das sind schon die gestoppten Zeiten nach dem ersten Laden.
Ja ich habe bei dem mod_perl Modul nur im handler gestoppt, also der Bereich der bei jedem Aufruf durchlaufen wird. Nicht ganz oben, das wird ja nur einmal beim Apache reload neu geladen.

fast-cgi, sagt mir jetzt nichts, zumindest nicht bewusst installiert. Ich habe das 5.8.4 ganz normal installiert.

Gruß Robert
ptk
 2005-03-03 16:21
#30988 #30988
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wie sieht es mit mod_perl1 + apache1 aus? mod_perl2 ist ja nicht unbedingt produktionswuerdig... hatte mal bei apache2 nicht die Moeglichkeit zwischen forking und threading zu waehlen? Perl-Threads sind nicht unbedingt die schnellsten, besonders das Erzeugen eines neuen Interpreters ist langsam.
wwwfun
 2005-03-04 12:17
#30989 #30989
User since
2005-03-03
2 Artikel
BenutzerIn
[default_avatar]
Ehrlich gesagt ist mir das zu aufwendig für einen Test Apache neu zu installieren.
Gibt es denn Erfahrungswerte in dieser Richtung das Apache2 mit mod_perl 2 "viel" langsamer ist?
sri
 2005-03-05 22:12
#30990 #30990
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also, wenn mod_perl langsamer ist als CGI ligt es ganz sicher an deinem umgeschriebenen skript, mod_perl ist wenn man es richtig benutzt mehrere 100% schneller.

Die performance wird natuerlich nicht auf server seite gemessen, sondern client seitig, bei Apache ist ein nettes kleines tool names "ab" dabei, versuch das mal.

Nebenbei empfehle ich Catalyst, damit macht das webanwendungen entwickeln wieder richtig spass. ;)
<< >> 6 Einträge, 1 Seite



View all threads created 2005-03-03 08:20.