Rene: Apache aufrüsten? Was bringt was? Ist GZIP ratsam?

Moin, vor kurzem sind wir bei 1&1 auf einen neuen Managed Server umgezogen. Vorher hatten wir eine 4-Kern-CPU, 8 GB Speicher und 500 GB Festplatte. Jetzt haben wir 2x8-Kern-CPU, 32 GB Speicher und 2 TB Festplatte.

Vor dem Umzug hatten wir häufige Server-Ausfälle (vor allem die MYSQL-Datenbank ist immer abgeschmiert), was man an der Server-Statistik auch immer fast vorhersagen konnte.

Unsere Server-Statistik zeigt Diagramme zum LOAD, CPU-Usage, Memory, SWAP und Disk I/O. Gibt es eine Internetseite, die erklärt, welche Werte gut und welche schlecht sind? Ich hab bisher keine zufriedenstellende gefunden.

Zurück zum Thema: Der LOAD des alten Servers war ständig über 2 (soweit ich weiß, bedeutet ein LOAD von 2, dass 2 Prozesse (welcher das auch imm er sein mögen) auf ihre Ausführung warten), die CPU-Usage bei über 50% und die SWAP-Datei locker bei 300 MB. Jetzt nach dem Umzug gähnt die CPU vor sich hin (max < 4%), die SWAP-Datei ist 0 MB groß und der durchschnittliche LOAD liegt bei 0.4, kratzt aber auch abends (wenn viel los ist) immer wieder an der 1er-Marke, in der Spitze sogar 1,7.

Meine Frage ist nun: Was für Leistung nimmt dieses LOAD eigentlich in Anspruch? Bei 1&1 hatte man uns gesagt, es wäre vor allem der Hauptspeicher entscheidend, um das weiter auffangen zu können. Nun ist ja auch die Belastung recht weit zurückgegangen. Aber heißt das wirklich, dass eine weitere Vergrößerung - immerhin mit erheblichen Kosten verbunden und mit einem weiteren Upgrade - wirklich noch mehr Milderung bringt? Oder gibt es vielleicht noch andere Faktoren?

Als nächster Schritt käme natürlich auch das Optimieren von diversen PHP-Skripten und DB-Abfragen in Frage.

Eine weitere Möglichkeit zur Optimierung wäre auch der Einsatz der Gzip-Komprimierung. Kann man diese ohne Bedenken einsetzen? Und wie wirkt sich das auf den LOAD aus? Oder wird da eher die CPU beansprucht? Hat die Gzip-Komprimierung Einfluss auf Suchmaschinen? Doch gar nicht, oder? Ich frag lieber ;-)

Und man liest ja hier und da mal auch was negatives
http://aktuell.de.selfhtml.org/artikel/server/apachetuning/index.htm#a12
Daher sind Erfahrungswerte dienlicher, denke ich.

Danke und Gruß,
René

  1. Unsere Server-Statistik zeigt Diagramme zum LOAD, CPU-Usage, Memory, SWAP und Disk I/O. Gibt es eine Internetseite, die erklärt, welche Werte gut und welche schlecht sind? Ich hab bisher keine zufriedenstellende gefunden.

    Das kommt drauf an - niedrige Auslastung, CPU-Time kann bedeutet, dass man noch viele Spielereien machen kann, die die Performance verbessern (siehe unten) und trotzdem noch genug freiraum hat. Umgekehrt kann es bedeuten, dass man seine Hausaufgaben bereits gemacht hat oder dass einfach auf dem Server nichts los ist und er hoffnungslos überdimensioniert ist :)

    Was für Leistung nimmt dieses LOAD eigentlich in Anspruch?

    CPU-Time, Speicher - je nachdem was der Prozess benötigt. Es gibt Dinge die benötigen verdammt viel Arbeitsspeicher aber kaum Rechneleistung und es geht dinge die brauchen Verdammt viel Rechenleistung aber kaum Arbeitsspeicher. Bildbearbeitung fällt eher in die Richtung: viel Speicher, wenig CPU-Time. Primzahlen berechnen ist eine Geschichte wo man nie genug CPU-Time haben kann, der Arbeitsspeicehr aber eher eine untergeordnete Rolle erfüllt.

    Natürlich spielt auch die I/O-Rate des Speichermediums eine wichtige Rolle: besonders wenn große Files gelesen werden müssen, hilft es nicht viel RAM zu haben, wenn die Daten garnicht erst schnell genug dort hinkommen.

    Z.B. eben wieder bei Bildbearbeitung:

    Im Filesystem liegt ein 10 MB File hoch und das muss runtergerechnet werden - einfach gesagt: das File muss in den RAM geladen werden, dann in eine Bitmap übertragen werden (riesige Datenmenge), dann runterrechnen und wieder Speicher und zurück auf die Platte schreiben.

    1&1 setzt hier afaik durchweg gewöhnliche SATA-Platte ein, die sind zwar groß und als Massenspeicher durchaus geeignet - in einem Server der ordentlich Saft braucht aber eigentlich nicht der Bringer (zumindest wenn man davon ausgeht, dass es einfache Platten sind - die Schnittstelle ansich wäre nicht das Problem.

    Eine weitere Möglichkeit zur Optimierung wäre auch der Einsatz der Gzip-Komprimierung. Kann man diese ohne Bedenken einsetzen? Und wie wirkt sich das auf den LOAD aus?

    gpzip-Komprimierung wirkt sich auf alles aus: CPU, Speicher, Cache und die die Auslastung - unterm strich ist die Frage was du damit bezwecken willst - sollen die Dokumente schneller an den Client ausgeliefert werden?

    Hat die Gzip-Komprimierung Einfluss auf Suchmaschinen? Doch gar nicht, oder? Ich frag lieber ;-)

    Common sense: wenn du zwei exakt identische Dokumente hast, von denen eines 500 ms zur Auslieferung benötigt und das andere 3 Sekunden, welches empfiehlst du (ungeacht anderer Faktoren)?

    1. 1&1 setzt hier afaik durchweg gewöhnliche SATA-Platte ein, die sind zwar groß und als Massenspeicher durchaus geeignet - in einem Server der ordentlich Saft braucht aber eigentlich nicht der Bringer (zumindest wenn man davon ausgeht, dass es einfache Platten sind - die Schnittstelle ansich wäre nicht das Problem.

      1&1 bietet noch einen Hochleistungs-Server mit SAS-Festplatten an, aber der kostet gleich 200 Euro mehr im Monat. Und ich weiß nicht, ob sich das für Internetseiten mit vielen kleinen Bildern (50-100 kb) überhaupt lohnt.

      Eine weitere Möglichkeit zur Optimierung wäre auch der Einsatz der Gzip-Komprimierung. Kann man diese ohne Bedenken einsetzen? Und wie wirkt sich das auf den LOAD aus?

      gpzip-Komprimierung wirkt sich auf alles aus: CPU, Speicher, Cache und die die Auslastung - unterm strich ist die Frage was du damit bezwecken willst - sollen die Dokumente schneller an den Client ausgeliefert werden?

      Ja

      Hat die Gzip-Komprimierung Einfluss auf Suchmaschinen? Doch gar nicht, oder? Ich frag lieber ;-)

      Common sense: wenn du zwei exakt identische Dokumente hast, von denen eines 500 ms zur Auslieferung benötigt und das andere 3 Sekunden, welches empfiehlst du (ungeacht anderer Faktoren)?

      Hmm, schwierig, ich nehm dann die 500 ms, glaub ich ;-)

  2. Moin!

    Moin, vor kurzem sind wir bei 1&1 auf einen neuen Managed Server umgezogen. Vorher hatten wir eine 4-Kern-CPU, 8 GB Speicher und 500 GB Festplatte. Jetzt haben wir 2x8-Kern-CPU, 32 GB Speicher und 2 TB Festplatte.

    Vor dem Umzug hatten wir häufige Server-Ausfälle (vor allem die MYSQL-Datenbank ist immer abgeschmiert), was man an der Server-Statistik auch immer fast vorhersagen konnte.

    Unsere Server-Statistik zeigt Diagramme zum LOAD, CPU-Usage, Memory, SWAP und Disk I/O. Gibt es eine Internetseite, die erklärt, welche Werte gut und welche schlecht sind? Ich hab bisher keine zufriedenstellende gefunden.

    Zurück zum Thema: Der LOAD des alten Servers war ständig über 2 (soweit ich weiß, bedeutet ein LOAD von 2, dass 2 Prozesse (welcher das auch imm er sein mögen) auf ihre Ausführung warten), die CPU-Usage bei über 50% und die SWAP-Datei locker bei 300 MB. Jetzt nach dem Umzug gähnt die CPU vor sich hin (max < 4%), die SWAP-Datei ist 0 MB groß und der durchschnittliche LOAD liegt bei 0.4, kratzt aber auch abends (wenn viel los ist) immer wieder an der 1er-Marke, in der Spitze sogar 1,7.

    Möglich, dass ihr einen oder zwei ständig laufende Prozesse hattet, eventuell durch einen Einbrecher verursacht.

    Load von 2 auf einer CPU mit vier Kernen entspricht 50% Auslastung.

    Load von 0.4 auf einer 16-Kern-Maschine entspricht einem Load von 0.1 auf der Vier-Kern-Maschine, Load von 1.7 auf 16 Kernen einem Load von 0.425 auf den 4 Kernen - rein von der Auslastung her betrachtet, bzw. der Luft nach oben.

    Meine Frage ist nun: Was für Leistung nimmt dieses LOAD eigentlich in Anspruch? Bei 1&1 hatte man uns gesagt, es wäre vor allem der Hauptspeicher entscheidend, um das weiter auffangen zu können. Nun ist ja auch die Belastung recht weit zurückgegangen. Aber heißt das wirklich, dass eine weitere Vergrößerung - immerhin mit erheblichen Kosten verbunden und mit einem weiteren Upgrade - wirklich noch mehr Milderung bringt? Oder gibt es vielleicht noch andere Faktoren?

    LOAD ist recht simpel: Pro CPU-Kern bedeutet ein Load von einer Einheit 100% Auslastung. Eine 1-Kern-CPU sollte also immer deutlich unter Load 1 gefahren werden, eine CPU mit 4 Kernen kann LOAD von 4 ab für 100% Auslastung. Mit einer Dual-8Kern-Maschine ist eine 100%-Auslastung bei LOAD 16.

    Allerdings: Ein normaler Webserver kann, wenn er nix zu tun hat, auch Load von nahezu 0 haben. Wenn das nicht passiert, ist was kaputt und muss untersucht werden.

    Ich hatte es mal erlebt, dass ein frisch vom Provider installierter Server leichtsinnigerweise ein ratbares User-Passwort für einen Standard-Account gesetzt bekam, und sich innerhalb von nicht einmal einer Stunde ein Bot einloggen konnte, sofort seinen Angreifer benachrichtigt hat, und dieser dann letztendlich nur eine Software installiert hat, die unter diesem Account ständig einen CPU-Kern voll ausgelastet hat, weil sie vermutlich in einer Endlosschleife irgendeinen Server betrieben hat. Warum diese Software so deutlich erkennbar Last auf der CPU verursacht hat, habe ich nicht im Detail untersuchen können, aber es war deutlich sichtbar, dass da was nicht stimmte.

    Wenn euer Server also als Grundlast immer einen Load von 2 hatte, und niemals drunter (Rundungsfehler mal nicht betrachtet), dann deutet das, technisch neutral betrachtet, auf zwei andauernd laufende Prozesse hin, warum auch immer die sowas tun.

    Und wenn der neue Server jetzt sowas nicht tut, dann wird das daran liegen, dass diese zwei Prozesse dort nicht gestartet wurden.

    Als nächster Schritt käme natürlich auch das Optimieren von diversen PHP-Skripten und DB-Abfragen in Frage.

    Es sollte analysiert werden, wo genau die Probleme sind. Und einfache Schritte sind natürlich leichter zu implementieren, als komplizierte Schritte. Analysen von Querys oder Codeoptimierung sind komplizierte Schritte.

    Eine weitere Möglichkeit zur Optimierung wäre auch der Einsatz der Gzip-Komprimierung. Kann man diese ohne Bedenken einsetzen? Und wie wirkt sich das auf den LOAD aus? Oder wird da eher die CPU beansprucht? Hat die Gzip-Komprimierung Einfluss auf Suchmaschinen? Doch gar nicht, oder? Ich frag lieber ;-)

    Deine Frage beweist, dass eine Problemanalyse noch nicht erfolgt ist. GZip bringt dem User selbst was, weil die Seiten schneller geladen sind. Sie verursacht allerdings auch eine gewisse CPU-Belastung, denn der Server muss die Komprimierung ja durchführen. Das ist allerdings eher zu vernachlässigen. GZip-Komprimierung sollte man unbedingt aktivieren, unabhängig von sonstigen Überlegungen.

    Problematisch ist immer, wenn die Festplatte aktiv werden muss. Deshalb wird man beispielsweise die Datenbank so konfigurieren, dass sie den gesamten Datenbestand komplett gecached im RAM halten kann. Das kann bedeuten, dass man einen eigenständigen Datenbankserver benutzt, der nichts anderes tut, der mit entsprechend viel RAM ausgestattet ist, und der dann über eine schnelle Netzwerkanbindung an den Webserver angeschlossen ist. RAM ist durch nichts zu ersetzen - außer durch mehr RAM.

    Auch das Caching des Webservers sollte einer kritischen Betrachtung unterzogen werden. Der Apache-Webserver ist zwar sehr universell, aber auch recht langsam. Erstens gibt es alternative Webserver, die vor allem bei hoher Last deutlich besser skalieren, zweitens gibt es auch Reverse-Proxys wie z.B. Varnish, die die cachebaren Requests einfach aus ihrem eigenen RAM beantworten, ohne den Apache zu fragen.

    Weiterhin kann man auch recht effektiv Caching innerhalb der Webapplikation einbauen, wenn man analysiert hat, wo dort bislang die Schwachpunkte waren.

    Und man liest ja hier und da mal auch was negatives
    http://aktuell.de.selfhtml.org/artikel/server/apachetuning/index.htm#a12
    Daher sind Erfahrungswerte dienlicher, denke ich.

    Der Artikel ist von 2004 (siehe Metatags). Die Probleme mit Netscape 4 und schlechten Proxy-Servern dürften mittlerweile nicht mehr existieren, und die notwenig höhere Rechenlast der CPU wird heutzutage einfach durch die riesigen Leistungsgewinne bei aktuellen CPUs irrelevant.

    - Sven Rautenberg

    1. Möglich, dass ihr einen oder zwei ständig laufende Prozesse hattet, eventuell durch einen Einbrecher verursacht.

      Iiieek, ich hoffe nicht ;-)

      Load von 2 auf einer CPU mit vier Kernen entspricht 50% Auslastung.

      Load von 0.4 auf einer 16-Kern-Maschine entspricht einem Load von 0.1 auf der Vier-Kern-Maschine, Load von 1.7 auf 16 Kernen einem Load von 0.425 auf den 4 Kernen - rein von der Auslastung her betrachtet, bzw. der Luft nach oben.
      LOAD ist recht simpel: Pro CPU-Kern bedeutet ein Load von einer Einheit 100% Auslastung. Eine 1-Kern-CPU sollte also immer deutlich unter Load 1 gefahren werden, eine CPU mit 4 Kernen kann LOAD von 4 ab für 100% Auslastung. Mit einer Dual-8Kern-Maschine ist eine 100%-Auslastung bei LOAD 16.

      Ah, gut zu wissen.

      Allerdings: Ein normaler Webserver kann, wenn er nix zu tun hat, auch Load von nahezu 0 haben. Wenn das nicht passiert, ist was kaputt und muss untersucht werden.

      Nachts liegt der Load bei fast 0, da laufen nur ein paar cronjobs.

      Ich hatte es mal erlebt, dass ein frisch vom Provider installierter Server leichtsinnigerweise ein ratbares User-Passwort für einen Standard-Account gesetzt bekam, und sich innerhalb von nicht einmal einer Stunde ein Bot einloggen konnte, sofort seinen Angreifer benachrichtigt hat, und dieser dann letztendlich nur eine Software installiert hat, die unter diesem Account ständig einen CPU-Kern voll ausgelastet hat, weil sie vermutlich in einer Endlosschleife irgendeinen Server betrieben hat. Warum diese Software so deutlich erkennbar Last auf der CPU verursacht hat, habe ich nicht im Detail untersuchen können, aber es war deutlich sichtbar, dass da was nicht stimmte.

      Ich denke und hoffe, dass das bei uns nicht der Fall ist bzw. war.

      Es sollte analysiert werden, wo genau die Probleme sind. Und einfache Schritte sind natürlich leichter zu implementieren, als komplizierte Schritte. Analysen von Querys oder Codeoptimierung sind komplizierte Schritte.

      und zeitaufwendig

      Problematisch ist immer, wenn die Festplatte aktiv werden muss. Deshalb wird man beispielsweise die Datenbank so konfigurieren, dass sie den gesamten Datenbestand komplett gecached im RAM halten kann. Das kann bedeuten, dass man einen eigenständigen Datenbankserver benutzt, der nichts anderes tut, der mit entsprechend viel RAM ausgestattet ist, und der dann über eine schnelle Netzwerkanbindung an den Webserver angeschlossen ist. RAM ist durch nichts zu ersetzen - außer durch mehr RAM.

      Auch das Caching des Webservers sollte einer kritischen Betrachtung unterzogen werden. Der Apache-Webserver ist zwar sehr universell, aber auch recht langsam. Erstens gibt es alternative Webserver, die vor allem bei hoher Last deutlich besser skalieren, zweitens gibt es auch Reverse-Proxys wie z.B. Varnish, die die cachebaren Requests einfach aus ihrem eigenen RAM beantworten, ohne den Apache zu fragen.

      Weiterhin kann man auch recht effektiv Caching innerhalb der Webapplikation einbauen, wenn man analysiert hat, wo dort bislang die Schwachpunkte waren.

      Ja, Caching ist auch eine Überlegung wert

      Und man liest ja hier und da mal auch was negatives
      http://aktuell.de.selfhtml.org/artikel/server/apachetuning/index.htm#a12
      Daher sind Erfahrungswerte dienlicher, denke ich.

      Der Artikel ist von 2004 (siehe Metatags). Die Probleme mit Netscape 4 und schlechten Proxy-Servern dürften mittlerweile nicht mehr existieren, und die notwenig höhere Rechenlast der CPU wird heutzutage einfach durch die riesigen Leistungsgewinne bei aktuellen CPUs irrelevant.

      Danke für die ausführliche Antwort!

  3. Zurück zum Thema: Der LOAD des alten Servers war ständig über 2 (soweit ich weiß, bedeutet ein LOAD von 2, dass 2 Prozesse (welcher das auch imm er sein mögen) auf ihre Ausführung warten), die CPU-Usage bei über 50% und die SWAP-Datei locker bei 300 MB.

    Wenn die SWAP-Datei bei 300 MB lag, dann bedeutet das, dass Daten, die eigentlich im Arbeitsspeicher sein sollten auf der Festplatte liegen und dorthin geschrieben und von dort gelesen werden. Da bedeutet weitere CPU-Last sowie Wartezeiten und ich wundere mich ergo auch nicht über die Auskunft des Hosters.

    Das Upgrade erscheint mir vor allem hinsichtlich des Prozessors etwas großzügig, wobei ich natürlich nicht weiß welche Werte in Spitzenbelastungszeiten erreicht werden.

    Aber ich finde es schon mal gut, dass Ihr einen Managed Server genommen habt. Andere meinen den Server selbst betreiben zu können und nerven dann in Foren statt Nägel mit Köpfen zu machen.

    Fred Furunkelstein

    1. Moin Fred,

      Wenn die SWAP-Datei bei 300 MB lag, dann bedeutet das, dass Daten, die eigentlich im Arbeitsspeicher sein sollten auf der Festplatte liegen und dorthin geschrieben und von dort gelesen werden. Da bedeutet weitere CPU-Last sowie Wartezeiten [...]

      Das ist so zu pauschal. Je nach OS wird verhältnismäßig aggressiv ausgelagert (Linux ist hier ein beliebter Kandidat) um Platz zu schaffen für Dateisystem-Buffers. Nennt sich "Swapiness." Interessanter wäre die allgemeine Auslastung des Speichers, um auszuschliessen, dass es sich hier um Daten handelt, die das OS aktuell nicht benötigt.

      LG,
       CK

      1. Hi,

        hier die aktuellen Werte der letzten Woche

        LOAD (2x8 CPU-Kerne)
        avg: 0.4
        max: 0.99

        CPU usage
        nicht erwähnenswert, 99% idle

        Memory (insgesamt 32 GB)
        used> avg: 930 MB max: 1003 MB
        buffered> avg: 300 MB max: 303 MB
        cached> avg: 29,6 GB max: 29,9 GB
        free> avg: 623 MB max: 644 MB

        SWAP
        used> avg: 217m MB max: 260m MB
        free> avg: 494 MB max: 494 MB

        Disk I/0 (Blocks/sec)
        Blocks read> avg: 488m max: 130,5 (war nur ein Ausreißer)
        Blocks written> avg: 125 max: 280

        Da scheint mir noch ziemlich viel Luft nach oben zu sein. Gut, ich muss es nicht bezahlen ;-)

        Was mich noch interessiert, sind die Disk I/O-werte. Ist das jetzt viel oder lächerlich wenig oder normal?

        Gruß,
        René

    2. Aber ich finde es schon mal gut, dass Ihr einen Managed Server genommen habt. Andere meinen den Server selbst betreiben zu können und nerven dann in Foren statt Nägel mit Köpfen zu machen.

      Wobei sich idR. die Frage stellt ob man einen Managed Server nimmt oder jemanden, der einem den Server betreut.

      Bei einem Managed Server läuft man gefahr, dass der Host anstatt sich um den Server zu kümmern eher den nächst teureren vorschlägt.

      Ein Dienstleister hingegen kostet idR. mehr als ein Managed Server, dafür bekommt man (sofern man keinen Dampfplaurerer erwischt) eine ordentliche Betreuung.