phpbar.de logo

Mailinglisten-Archive

AW: Mysql-Daemon + Performance
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AW: Mysql-Daemon + Performance



Aloha,

> ----------
> Von: 	Marco Rothley[SMTP:rothley_(at)_crpc.de]
> 
> Betreff: 	Re: Mysql-Daemon + Performance
> 
	...Datenbank, als apaches mod_perl (verwendest Du doch, wenn ich
Deine Frage
> richtig verstehe). Das Problem dabei ist, dass apache mit mod_perl recht
> gross werden kann. Dummerweise ist auch jedes child so gross, so dass der
> Server irgend wann mehr am swappen ist, als produktiv arbeiten kann. Die
> Loesung ist: Man muss es irgendwie schaffen, zwei Apaches am laufen zu
> haben. Den einen mit mod_perl fuer die dynamisch erzeugten Sachen und
> einen
> weiteren ohne mod_perl fuer alles was kein perl braucht (statische
> html-Seiten, Bilder, ...).
> 
Wenn bei mod_perl die Apache-Prozesse übermäßig groß
werden, liegt das zu 99,999 % daran, daß der Perl-
Programmierer das Prinzip von mod_perl nicht verstan-
den hat und die zugehörige Doku nicht gelesen hat.

mod_perl arbeitet ungefähr so:

Jedes aufgerufene Perl-Programm wird nur einmal geladen
und compiliert. Danach läuft es als UNTERPROGRAMM vom
mod_perl (So wie eine Funktion in einem normalen Pro-
gramm). D.h. während der Lebensdauer eines Apache-Prozesses
(max_request_per_child oder so) wird jedes aufgerufene
Perl-Script nur einmal compiliert und bleibt dann im Haupt-
speicher !.

Das Problem dabei : Alle Variablen bleiben erhalten. Es
wird nichts aufgeräumt. NICHTS. GARNICHTS.

Beispielscript:

open(DAT, '>50_mb_textdatei.txt');
_(at)_zeilen = <DAT>;
close(DAT);

Wenn man 5 Serverprozesse hat, und jeder nur einmal das
Programm ausführt, hat man plötzlich 5 Serverprozesse, die
je mindestens 50 MB Hauptspeicher verprassen.

Warum ?
Weil _(at)_zeilen erhalten bleibt und erst beim nächsten Aufruf
dieses Programms neu geladen wird !

Besser:
open(DAT, '>50_mb_textdatei.txt');
_(at)_zeilen = <DAT>;
close(DAT);
.... (Programm)
_(at)_zeilen=();		# Inhalt loeschen.


Also nicht am Server schrauben, wenn
der Fehler am Programmierer liegt ;-)


Viele Grüße, Mathias


---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive