Michael Schröpl: OT: performanter Server für HTTP-Logging

Beitrag lesen

Hi Andreas,

Und der Apache soll verhältnismäßig langsam sein was das Ausliefern von statischen Seiten angeht habe ich mir sagen lassen! IIS z.B. sei schneller, und auch eienige abndere für Linux.

es gibt keine Möglichkeit, die Geschwindigkeit "des Apache" mit derjenigen "des IIS" zu vergleichen.

Das Unternehmen scheitert schon daran, daß es "den Apachen" gar nicht gibt.
Was es tatsächlich gibt, das ist ein aus einer konfigurierbaren (!) Menge von Modulen zusammengebundenes httpd-Binary, welches "einen bestimmten Apache" ausmacht.

Und "statische Seiten" ist auch ein völlig untaugliches Kriterium. Nicht nur die dynamische Berechnung eines Seiteninhaltes kostet schließlich Zeit, sondern eine Vielzahl anderer Features, die vorher im Webserver gelaufen sein können:

  • URL-Manipulation (mod_rewrite)
  • Übersetzung von URLs in Pfadnamen (mod_alias, mod_dir, ...)
  • Berechtigungsprüfung (mod_auth_*)
  • Suche nach dezentralen Konfigurationsanweisungen für "Scopes" (.htaccess)
  • Content Negotiation
    All diese Mechanismen sind _vor_ dem Zugriff auf eine _statische_ Datei bereits abgeschlossen - und wenn sie durchlaufen werden mußten, kostet sie natürlich Zeit.

Wenn Du einen Apache auf diejenigen Funktionen reduzierst, die Du tatsächlich benötigst, und die entsprechenden Module gar nicht erst mit einkompilierst (oder die Funktion abschaltest, falls sie im core steckt - "AllowOverride None" ist so eine Direktive, und "Options FollowSymLinks" ebenfalls - lies mal den Apache Performance Tuning Guide), dann wird der Apache bei Zugriffen auf die immer noch identische statische Datei natürlich erheblich schneller.

Ist ja auch logisch, der Apache ist ein wirklich tooles und _flexibles_ programm, nur bin ich der Meinung das Flexibilität fast immer auf Kosten von Performance geht.

Deshalb verwende ich mod_so ja auch nicht, und mod_rewrite vermeide ich ebenfalls.

Ich brache keinen Webserver der den Request erstmal parst, analysiert,

Doch, den brauchst Du. Du mußt schließlich HTTP unterstützen.

mit irgendwelchen KOnfigurationsdaten abgleicht,

Das kommt darauf an, wie kompliziert diese Konfigurationsdaten sind - das liegt in Deiner direkten Einflußnahme.

loggt, und dann aus dem Dateisystem eine Datei holt,

Über mod_mmap_static kannst Du Deine Reponse im Hauptspeicher halten lassen und damit den Dateizugriff komplett vermeiden.

dynamisch einen Header erzeugt,

Du kennst mod_asis, das Dateien inklusive fertiger HTTP-Header unmanipuliert ausliefert?

Bei mir reichen 3 Schritte. HTTP-Header entgegennehmen, in Datei schreiben und fertigen Response senden, der immer gleich ist.

Das kann der Apache im Prinzip auch. Du mußt ihn nur so konfigurieren, daß er genau dies tut, und alles andere rauswerfen.

Ich denke wenn sich ein Apache-programmiere hinsetzt udn so eien Server in C schreibt wird er 10 bis 100 mal schnelle rals de Apache, das _muss_ er einfach!

Du kannst Dir auch einen Apache so "zurecht löschen", daß er genau Deine Anforderung erfüllt.
Oder Du kannst ein Apache-Modul schreiben, das Deine Anforderungen (Zählen und statische Antwort senden) erfüllt und ansonsten vom Apache-Server aufgerufen wird.

Wenn Du mit dem Apache konkurrieren können willst, dann liest erst mal die Beschreibung sämtlicher Module durch, die es bereits gibt ... ich erkenne da diverse Lücken bei Dir.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
0 40

Eigener Webserver in Delphi

Kay
  • sonstiges
  1. 0
    Philipp Hasenfratz
  2. 0
    Philipp Hasenfratz
    1. 0
      Kay
    2. 0
      Andreas Korthaus
      1. 0
        Philipp Hasenfratz
        1. 0

          OT: performanter Server für HTTP-Logging

          Andreas Korthaus
          • webserver
          1. 0
            Philipp Hasenfratz
            1. 0
              Andreas Korthaus
              1. 0
                Philipp Hasenfratz
              2. 0
                Michael Schröpl
            2. 0
              Sven Rautenberg
              1. 0
                Philipp Hasenfratz
                1. 0
                  Andreas Korthaus
                  1. 0
                    Philipp Hasenfratz
                    1. 0
                      Andreas Korthaus
                      1. 0
                        Andreas Korthaus
                        1. 0
                          Philipp Hasenfratz
                          1. 0
                            Andreas Korthaus
                            1. 0
                              Philipp Hasenfratz
                              1. 0
                                Andreas Korthaus
                                1. 0
                                  Philipp Hasenfratz
                              2. 0
                                Michael Schröpl
                                1. 0
                                  Andreas Korthaus
                            2. 0
                              Michael Schröpl
                        2. 0
                          Michael Schröpl
                          1. 0
                            Andreas Korthaus
                      2. 0
                        Philipp Hasenfratz
                        1. 0
                          Andreas Korthaus
                          1. 0
                            Philipp Hasenfratz
                            1. 0
                              Andreas Korthaus
                              1. 0
                                Philipp Hasenfratz
                                1. 0
                                  Andreas Korthaus
                                  1. 0
                                    Philipp Hasenfratz
                          2. 0
                            Michael Schröpl
                            1. 0
                              Andreas Korthaus
                              1. 0
                                Michael Schröpl
                  2. 0
                    Michael Schröpl
                    1. 0
                      Andreas Korthaus
                      1. 0
                        Michael Schröpl