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

Subject: Re: Cache beim Apache abschalten
From: Olaf Filies
Date: 7 Apr 1999 20:52:09 -0000


Hallo

Markus Stumpf schrieb:
> 
> On Wed, Mar 31, 1999 at 10:23:57PM +0200, Olaf Filies wrote:
> > - Vorsicht mit dem rewrite Modul wenn du nicht wirklich weiterleiten
> >   vorn url's benötigst, weil dein Server dauernd umzieht, oder
> >   du einiges von anderen Server holst brauchst
> 
> Wieso "vorsicht" ???
> Allerdings muss ich sagen, dass man viel mit der "Alias" Anweisung
> machen kann und die (teureren) Rewrites zu oft eingesetzt werden.
> Probleme durch das Vorhandensein von mod_rewrite kann ich aber keine
> sehen.
Eben. Ich denke das für die allermeisten Fälle ein Alias völlig 
ausreichend ist, ansonsten sollte man vielleich noch einmal darüber
Nachdenken. Es gibt fast immer auch eine Möglichkeit diese zu umgehen

> 
> > - die Liste der Module in httpd.conf ist zwar nicht egal, aber
> >   wichtiger ist was eincompiliert ist.
> >   httpd -l ist das Kommando
> >   Wenn da mod_cgi nicht drin ist hast du ein Problem.
> >   Unter www.ford-mason.co.uk/resources/apache-refcard
> >   findest du eine Referenccard. Auf der stehen alle Befehle,
> >   Module und ob es core (ohne gehts nicht), basic (ohne geht es
> >   eigentlich auch nicht, man kann sie aber weglassen) oder extended
> >   (man brauch sie nur für spezielle Dinge) sind.
> 
> Aehm ... mal langsam...
> Es gibt beim configure eine Option
>    --enable-shared=all
> Dann werden ALLE (bis auf das mod_so, das er fuer den dl braucht)
> shared gemacht und muessen im Apache.conf explizit geladen werden.
> Das ist der "flexibelste" Ansatz. Dann bringt aber das
>     httpd -l
> nur das mod_so.
> Das heisst aber nicht, dass durch die Konfiguration nicht dennoch
> sehr viele Module zur Verfuegung stehen.
> 
Ok dann frag vorher mit httpd -V ab welche Kompilationsparameter
gesetzt wurden.
Wenn aber die Struktur des Servers festliegt, sollte man sich durchaus
mal einen kompilationsgang mit allen benötigten Modulen gönnen und
alle anderen weglassen. Das führt zu einem kleineren (wenn man sich
wirklich auf das notwendige beschränkt) httpd.

> > - Apache startet nicht! wen in den Konfigurationsdateien ein Fehler
> >   Auftritt.
> 
> Hier kann auch ein Blick in die Error-Datei helfen, um den Fehler
> aufzuspueren.
Sicherlich. =:-)
> 
> > Zum Script:
> > - statt direkt per print contents zu setzten folgendes einsetzen:
> >
> > use CGI;
> > use strict;
> 
> Das ist ganz nett fuer einen Server mit ein paar cgi-Zugriffen pro
> Stunde. Das ist der rasche Tod fuer einen Server mit ein paar
> cgi-Zugriffen pro SEKUNDE und ohne mod_perl.
> Das CGI Module ist ganz nett und komfortabel, aber dennoch (aus meiner
> Erfahrung) fuer 99,9% aller CGIs absoluter Overkill.
> Da tuns dann auch die Zeilen
> 
>     # suck it in
>     if ($ENV{'REQUEST_METHOD'} eq "GET") {
>             $RPT_query_string=$ENV{'QUERY_STRING'};
>     } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
>             read(STDIN, $RPT_query_string, $ENV{'CONTENT_LENGTH'});
>     } else {
>        print <<EOF;
> Content-Type: text/html
> 
> <H1>Submission method '$ENV{'REQUEST_METHOD'}' not supported!</H1>
> EOF
>        exit;
>     }
> 
>     # ----------------------------------------------------------
>     # split variables and save to hash
>     #
>     foreach (split(/\&/,$RPT_query_string))
>     {
>         ($key,$value)=split(/=/,$_);
> 
>         if ($ENV{'CONTENT_TYPE'} eq "application/x-www-form-urlencoded")
>         {
>             $key =~ s/\+/ /go;
>             $key =~ s/\%([0-9a-f]{2})/pack(C,hex($1))/eig;
> 
>             $value =~ s/\+/ /go;
>             $value =~ s/\%([0-9a-f]{2})/pack(C,hex($1))/eig;
>         }
> 
>         #
>         # if already exists, add it with a " " as delimiter
>         # else simply set the value
>         #
>         unless (defined($RPT_KEYS{"$key"})) {
>             $RPT_KEYS{"$key"} = $value;
>         } else {
>             $RPT_KEYS{"$key"} .= " ".$value;
>         }
>     }
> 
> Danach die Ausgaben mit "print" rausjagen und fertig.
> 
> Das spart IMHO *EINIGES* an Systemressourcen.
> 
> Wir hatten bei LEO ganz am Anfang ein 10 Zeilen perl-Skript (damals
> gabs noch keinen Apache und auch kein mod_perl), das eigentlich nur
> ein Pfad den es gekriegt hat mit dem realen lokalen Verzeichnis
> ergaenzt hat und eine Datei ausgespuckt hat.
> Mit zunehmender Beliebtheit von LEO wurde das Skript zu einem Problem.
> (Es wurde bei jedem Anklicken eines Verzeichnis des FTP-Baums
> aufgerufen. Und wir wollten nicht den FTP-Tree ueber den HTTP-Server
> direkt zur Verfuegung stellen, also haben wir das ueber das Skript
> "verschattet").
> Die eigentlich ziemlich leistungsstarke Kiste ging ziemlich in die
> Knie. Bei jedem Request muss der Interpreter hochgeschossen werden,
> das Skript geparsed und ausgefuehrt.
> Wir haben dann die 10 Zeilen perl durch 20 Zeilen C-Code ersetzt
> und weg war das Problem...
Damit wir uns da nicht falsch verstehen. Wenn ich einen Produktivserver
habe dann werde ich den ganz sicher nicht ohne mod_perl starten 
insbesondere nicht wenn da noch cgi Scripte laufen. Aber mod_perl ist
absoluter Unsinn wenn ich meine Scripte testen möchte, weil das 
geht nicht. 
Eine Umsetzung in c-code ist dann aber erst der dritte Schritt, es
seiden ich bin ein begnadeter c-Programierer und weiß sofort was ich
machen muß. Bin ich nicht, deshalb nehme ich erst mal Perl, das
kann sollange verbiegen bis es klappt. =:-)

Olaf

> 
>         \Maex
> 
> --
> Markus Stumpf           |  mailto:maex@LEO.org   |  Experience a new dimension
> Link Everything Online  |    http:/www.LEO.org/  |  in software archive access
>                         |                        |  http://www.leo.org/archiv/

--

Dr. Olaf Filies
Infineon Technologies
Olaf.Filies@infineon.com	Mask House HL MH DPT
Olaf.Filies@t-online.de		Balanstr. 73