[Vienna-pm] mod_perl + speicherproblem

Marinos Yannikos mjy at geizhals.at
Thu May 22 09:45:54 PDT 2008


max demmelbauer schrieb:
> ./webtek console (was einfach nur den ganzen applikation-code laedt, und 
> eine command-zeile bereitstellt) bei mir lokal auf einem IC2D 20MB, und 
> auf der athlon64 debiankiste 40MB.

32bit vs. 64bit Perl wohl (8 byte pointer, alignment, ...), obwohl 
Faktor 2 da eher der worst case sein sollte.

> ich versteh einfach nicht:
> 
>     - erstens: wieso schon mal der unterschied von 20MB zwischen den 
> systemen
>     - zweitens: wieso braucht der apache prozess nochmal 80MB mehr fuer 
> denselben code?
>     - der unterschied zw test/live betrieb im speicher ist auch schon 
> direkt nach dem starten (also unabhaengig von den requests)

Dürfte dann wohl auch auf 32/64 bit zurückzuführen sein, evtl. auch 
andere Perl-Version?

>     - mir ist es auch egal, der prozess kann soviel brauchen wie er 
> will! aber wenn der server immer wieder crached ist es halt sch**e.. 
> grrr...

Wir haben schon lange ein Setup wie in
http://perl.apache.org/docs/1.0/guide/strategy.html#One_Plain_Apache_and_One_mod_perl_enabled_Apache_Servers
beschrieben, damit können wir die mod_perl Apaches auf 10-15 limitieren 
und trotzdem einige 100 Requests parallel abarbeiten (auf statische 
Daten z.B.).

Ansonsten kannst du wohl auch mal FastCGI anschauen, das trennt die 
fetten Perl-Prozesse sauberer vom Apache als mod_perl. Ich warte 
einstweilen auf ein Perl mit Speichermanagement, das die letzten 30 
Jahre Forschung in dem Gebiet nicht verschlafen hat. ;-)
(zur Not auch eine Version mit drangepfrimmeltem 
http://www.hpl.hp.com/personal/Hans_Boehm/gc/)

> aber irgendwo ist ganz sicher ein fehler bei uns im code, und der bringt 
> mich an den rand des nervenzusammenbruchs, wenn ich am wo-ende 5x den 
> server restarten muss ;)

Du kannst ja mal die Apache-PIDs mitloggen 
(http://httpd.apache.org/docs/1.3/mod/mod_log_config.html - %P) und dann 
im access.log nachschauen, welche Requests einen bestimmten Prozess so 
aufgeblasen haben. Vielleicht findest du ja ein schönes memory leak (ist 
bei mod_perl sehr einfach zu erzeugen, nachdem die globalen Variablen ja 
bleiben).

> eine vermutung ist auch ein `cmd` aufruf im applikationscode (darf/soll 
> ich sowas im mod_perl env aufrufen?)

http://perl.apache.org/docs/1.0/guide/performance.html#Forking_and_Executing_Subprocesses_from_mod_perl
Gilt natürlich auch für backticks...

MfG,
-mjy
-- 
Dipl.-Ing. Marinos Yannikos, CEO
Preisvergleich Internet Services AG
Obere Donaustrasse 63, A-1020 Wien
Tel./Fax: (+431) 5811609-52/-55
Handelsgericht Wien - FN 197241K - Firmensitz Wien


More information about the Vienna-pm mailing list