Schrift
[thread]3210[/thread]

Unregelmäßige Fehlermeldungen



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Spectrum
 2006-06-01 22:10
#30173 #30173
User since
2006-06-01
5 Artikel
BenutzerIn
[default_avatar]
Hallo,

folgende Zeile lade ich am Anfang eines Scriptes

Code: (dl )
1
2
use strict;
use Config qw/$cgidir $servername/;

Ich habe nur immer wieder folgende Fehlermeldung im Errorlog:

Quote
[error] Global symbol "$cgidir" requires explicit package name at /srv/www/perl/ol.cgi line 13.\nGlobal symbol "$servername" requires explicit package name at /srv/www/perl/ol.cgi line 85.\n

Die Einträge erscheinen aber nur unregelmäßig alle 2-5 Minuten, das dürfe ca jedem 200ten bis 500ten Scriptaufruf entsprechen. In den allermeisten Fällen geht also alles glatt.

Hat jemand eine Idee, was hier die Ursache sein könnte bzw was ich dagegen tun kann?

Gruß,
Spectrum
ptk
 2006-06-01 23:33
#30174 #30174
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ist das ein echtes CGI-Skript oder läuft es unter Apache::Registry?
Spectrum
 2006-06-02 00:36
#30175 #30175
User since
2006-06-01
5 Artikel
BenutzerIn
[default_avatar]
Es läuft unter Apache::Registry.
ptk
 2006-06-02 03:20
#30176 #30176
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ist Config.pm dein eigenes Modul? Das ist gefährlich, da es schon ein Core-Perl-Modul mit dem gleichen Namen gibt. Vielleicht gab es einen Konflikt?
Spectrum
 2006-06-02 15:56
#30177 #30177
User since
2006-06-01
5 Artikel
BenutzerIn
[default_avatar]
Der Gedanken hatte ich auch und habe es in XYConfig.pm umbenannt, hat aber leider keinerlei Änderungen gebracht. Und nach etwa 15 Stunden im Produktiveinsatz (also locker einigen zehntausend Scriptaufrufen) ist Serverload plötzlich sprunghaft auf 750 (!) gestiegen und ich konnte nur noch mit Mühe den Apache restarten. Rufe das Script nun erstmal wieder normal auf (also nicht über mod_perl) und da läuft alles sauber :/ Ist mod_perl2.0.1 (oder Apache::Registry) mit der hohen Anzahl an Requests überfordert?
ptk
 2006-06-02 22:52
#30178 #30178
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Für mod_perl 2.0.1 und Apache::Registry kann ich nicht sprechen, aber mit mod_perl 1.28 und "echten" mod_perl-Handlern kann man locker 300 Requests/Sekunde im Langzeitbetrieb abhandeln. Ist die hohe Load durch zu hohen Speicherverbrauch entstanden? Es ist empfehlenswert, die maximale Anzahl der Apache-Prozesse niedrig zu halten, so dass die Maschine nicht ins Swappen gerät. Je nach RAM sollten 10 bis 40 Prozesse reichen.
Spectrum
 2006-06-03 01:41
#30179 #30179
User since
2006-06-01
5 Artikel
BenutzerIn
[default_avatar]
Tatächlich laufen bis zu 2000 Apache-Prozesse parallel (Chatsystem / Java Servlets die über den Apache per mod_jk an Tomcat angebunden sind). Ob der Absturz am Speicher lag konnte ich leider in dem Moment nicht testen, im "Normalbetrieb" sind aber 2 von 4 GB Ram frei. Die XYConfig.pm enthält genau 5 globale Variablen, dass hier schon der Speicher knapp wird, würde mich eher wundern.

Wie sieht denn ein "echter" mod_perl Handler aus? Damit kenne ich mich leider überhaupt nicht aus und hatte Apache::Registry als ausreichend gute Lösung angenommen. Fehler?
ptk
 2006-06-03 02:46
#30180 #30180
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei Java ist das etwas anderes, da sind es wohl eher Threads als Prozesse. Apache/mod_perl-Prozesse dagegen sind echte Prozesse und werden durchaus einige MB groß (jedenfalls bei Apache1.3). Der Speicherverbrauch scheint nicht in Relation zu der Größe der verwendeten Skripte/Module zu stehen.

Der Autor von Apache::Registry benutzt sein Modul nicht mehr, sondern nur echte Handler. Apache::Registry verwendet ein bisschen Magie, welche sich möglicherweise bei einigen deiner Request negativ auswirkt. Haben wir nicht im Wiki etwas über mod_perl-Handler?
Gast Gast
 2006-06-12 13:12
#30181 #30181
[quote=Spectrum,01.06.2006, 20:10]Hallo,

folgende Zeile lade ich am Anfang eines Scriptes

Code: (dl )
1
2
use strict;
use Config qw/$cgidir $servername/;

Ich habe nur immer wieder folgende Fehlermeldung im Errorlog:

Quote
[error] Global symbol "$cgidir" requires explicit package name at /srv/www/perl/ol.cgi line 13.\nGlobal symbol "$servername" requires explicit package name at /srv/www/perl/ol.cgi line 85.\n

Die Einträge erscheinen aber nur unregelmäßig alle 2-5 Minuten, das dürfe ca jedem 200ten bis 500ten Scriptaufruf entsprechen. In den allermeisten Fällen geht also alles glatt.

Hat jemand eine Idee, was hier die Ursache sein könnte bzw was ich dagegen tun kann?

Gruß,
Spectrum[/quote]
Naja,

Code: (dl )
1
2
use strict;
use Config qw/$cgidir $servername/;


die beiden Variablen sind ja auch nicht definiert.

Code: (dl )
1
2
3
use strict;
my ($cgidir, $servername);
use Config qw/$cgidir $servername/;

sollte helfen.

Und der Fehler erscheint jedesmal, wenn ein Script neu compiliert wird, nicht bei jedem Aufruf. Neu compiliert wird jedesmal dann, wenn ein neuer Apache Prozess startet und das Script zum ersten mal aufgerufen wird.
Rolf
GwenDragon
 2006-06-12 13:48
#30182 #30182
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
[quote=Guest,12.06.2006, 11:12]
Code: (dl )
1
2
use strict;
use Config qw/$cgidir $servername/;


die beiden Variablen sind ja auch nicht definiert.

Code: (dl )
1
2
3
use strict;
my ($cgidir, $servername);
use Config qw/$cgidir $servername/;

sollte helfen.[/quote]
Das ist nicht richtig.
Mit my ($cgidir, $servername); definierst du Vraiablen im Gültigkeitsbereich des Skripts und nicht in dem des Moduls Config!

Ich nehme eher an, die Variablen $Config::cgidir und $Config::servername werden nicht immer richtig gesetzt und exportiert.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-06-01 22:10.