Christian Kruse: Tipps um Apache schneller zu machen?

Beitrag lesen

Hallo MichaelB,

Wie auch immer, es lohnt sich trotzdem, den Apachen abzuspecken, da auch der Speicher der
Module mitkopiert werden muss. Auch wenn das on demand passiert, es muss geschehen.
Sind die Module eigentlich quasi mit einkompiliert oder werden sie on-demand geladen? Im
letzteren Fall würde durch zusätzliche Module beim forken kein Overhead entstehen.

Weder, noch. Man kann sie statisch mit einkompilieren, man kann sie aber auch dynamisch
laden lassen. Allerdings werden die Module beim Startup geladen.

Die fork() wird also immer von diesem (keine Resourcen belegenden) Vaterprozess gemacht

Falsch. Der Vaterprozess hat alle Module geladen, die Konfiguration geparsed, etc, pp.
Das ist halt die Frage ob der Apache wirklich alle Module beim Start lädt oder erst
on-demand. Den Apache-Quellcode habe ich dummerweise gerade nicht zur Hand. :-)

Er lädt sie direkt. Er *muss* sie sogar direkt laden. Jedes Modul kann
Konfigurations-Direktiven definieren. Die werden erst bekannt, wenn das Modul geladen ist.
Sind sie unbekannt, muss der Apache sie monieren.

[...]
Ich habe aber behauptet, daß der Apache aber nicht so vorgeht sondern DB-Handles und
andere Resourcen immer von Kindprozessen des httpd geöffnet werden wärend der
Vaterprozess von dem die forks erzeugt werden natürlich keine offnen Handles hat.
Dementsprechend hat der Apache auch kein Problem mit Resourcen (wie DB-Handles) beim
forken.

Das hängt davon ab, wie das Modul, dass diese Ressourcen benutzt, programmiert ist.
Prinzipiell kann das Modul auch vor dem fork() bereits Ressourcen allokieren.

Alles in Hinblick auf die Ausgangsdiskussion in der es darum ging ob sich ein dedizierter
Apache lohnt (weil beim forken zuviel Overhead entsteht) oder nicht. Und ich war eben
der Meinung so groß ist der Resourcenverbrauch nicht als das sich ein abgespeckter Apache
lohnt.

Das tut es in jedem Fall. a) wegen des gerigeren Aufwands beim fork() und b) wegen des
geringeren Speicherverbrauchs.

Mehr Klarheit würde bringen, wenn man wüßte ob Module on-demand geladen werden oder nicht.
Das sie als eigene Dateien vorliegen spricht dafür. Die Art wie sich eingebunden werden
dagegen. Wie ist das Ganze denn nun?

Der Apache-Startup läuft in drei Phasen:

Phase 1: grobes durchscannen der Konfigurations-Datei(en), so dass erkannt werden kann,
         welche Module geladen werden sollen.
Phase 2: Laden der Module und Handshaking mit ihnen (bekanntmachen der
         Konfigurations-Direktiven, Registrieren, etc, pp).
Phase 3: Genaues parsen der Konfigurations-Datei(en).

Die Module bleiben geladen solange der Apache läuft und werden kein zweites mal geladen.

Grüße,
 CK

--
Das Leben ist wie ein Kartenspiel: was dir gegeben wurde, ist vorbestimmt. Doch wie du damit spielst, ist deine Entscheidung.
0 56

Tipps um Apache schneller zu machen?

powtac
  • webserver
  1. 0
    MichaelB
    1. 0
      Christoph Schnauß
      1. 0
        Andreas Korthaus
        1. 0
          Christoph Schnauß
          1. 0
            Andreas Korthaus
            1. 0
              Christoph Schnauß
              1. 0
                Andreas Korthaus
                1. 0
                  serverAdmin
    2. 0
      powtac
    3. 0
      Andreas Korthaus
      1. 0
        MichaelB
        1. 0
          Andreas Korthaus
          1. 0
            MichaelB
            1. 0
              Andreas Korthaus
              1. 0
                MichaelB
                1. 0
                  Andreas Korthaus
                  1. 0
                    MichaelB
                    1. 0
                      Christian Kruse
                      1. 0
                        MichaelB
                        1. 0
                          Christian Kruse
                          1. 0
                            MichaelB
                            1. 0

                              Ergänzung

                              MichaelB
                              1. 0
                                Christian Kruse
                                1. 0
                                  MichaelB
                                  1. 0
                                    Christian Kruse
                                    1. 0
                                      MichaelB
                            2. 0
                              Christian Kruse
                              1. 0
                                MichaelB
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    MichaelB
                                    1. 0
                                      Christian Kruse
                                      1. 0
                                        MichaelB
                                        1. 0
                                          Andreas Korthaus
                                2. 0
                                  Andreas Korthaus
  2. 0
    Eternius
    1. 0
      powtac
    2. 0
      der implementierer
      1. 0
        Eternius
      2. 0
        Christoph Schnauß
    3. 0
      powtac
      1. 0
        Eternius
        1. 0
          powtac
          1. 0
            Eternius
            1. 0
              Christoph Schnauß
              1. 0
                Eternius
        2. 0
          Christoph Schnauß
      2. 0
        wahsaga
        1. 0
          powtac
  3. 0
    Andreas Korthaus
  4. 0
    Christian Kruse
    1. 0
      Christoph Schnauß
      1. 0
        Christian Kruse
        1. 0
          Christoph Schnauß
          1. 0
            Matti Maekitalo
          2. 0
            Thomas W.