coltseavers
Goto Top

Webserver überlastet - wie entlasten?

Hi ho,

ich hoste aktuell für nen Kunden eine Webseite basierend auf Wordpress.
Die Seite liegt auf einem Debian 9.1 mit Apache 2.4, PHP 7 und MariaDB 10.1.26.
Die Datenbank ist ca 210MB groß.

Der Server ist ein virtueller Server mit 10 Kernen, 50GB RAM und SSD-Anbindung.
Leider weiss ich nicht welche CPU dahinter steckt, und ob die Kerne exklusiv für mein virtuelles System zur Verfügung stehen.

Heute kam der Server "ein wenig" ins Schwitzen.
Unter "top" habe ich dann nachgeschaut, was grad passiert.
Der MySQL-Server belegte dabei zwischen 200 und 300% CPU (das interpretiere ich mal als Auslastung von 2-3 Kernen), die Anzahl der Apache-Prozesse lag bei ca 100-200 und die CPU hatte keine Reserven mehr. ( 0,0 idle) und die load sprang von üblicherweisen 0,x - 3 auf plötzlich über 100 - das ging echt krass von jetzt auf gleich.
Der "wa"-Wert lag dennoch in 99% der Zeit bei unter 1 - also die SSD war zum Glück nicht ausgelastet.

Vom Arbeitsspeicher sind im üblichen Betrieb ca 2-3 GB belegt - als der Server ins Schwitzen kam waren ca 10GB belegt - der RAM hatte also noch genug Reserven.

Die Frage ist nun, was ich verbessern / optimieren kann.
1)
Ich habe überlegt ob es Sinn macht die Datenbank auf nen separaten Server zu legen, damit die 10 Kerne voll und ganz für den Apache zur Verfügung stehen.
Meine Frage dazu wäre, ob die Webseite insgesamt nicht spürbar langsamer wird, wenn die Datenbankabfragen erstmal übers LAN an einen anderen Server weitergeleitet werden müssen.

2)
Falls für den Betrieb der Seite mehrere Apache-Server benötigt werden:
Wie realisiert man das? Wird ein Loadbalancer davorgeschaltet, oder kann ich das übers DNS mit Round Robin machen?
In diesen Szenarien würde ich dann vielleicht mit 2 Apache-Servern à 10 Kernen anfangen und einem SQL-Server mit 10 Kernen.

3)
Ich würde gerne das über 1GB große access.log vom Apache analysieren.
Insbesondere dahingehend, wieviele verschiedene Zugriffe pro Zeiteinheit erfolgt sind, damit ich die Anforderungen quantifizieren kann.
Welches tool könnt ihr mir empfehlen?

Vielen Dank vorab!

Gruß,
Colt

Content-ID: 389398

Url: https://administrator.de/contentid/389398

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

wiesi200
wiesi200 13.10.2018 um 22:10:25 Uhr
Goto Top
Hallo,

man könnte doch z.b. nginx als Reverse Proxy davor schalten. Bzw. nginx direkt als Webserver verwenden. Das sollte die Last nach unten schrauben.
maretz
maretz 13.10.2018 um 22:38:51 Uhr
Goto Top
Moin,

erst mal - dein Kunde, also lässt du dir die Lösung ja auch bezahlen... dann solltest du das auch selbst können.

Und mit den Angaben lässt sich leider eh nicht viel sagen. Ob z.B. die DB auf einem eigenen Server das System bremst hängt von der Menge der Daten und den Abfragen ab. Wenn deine Applikation z.B. ständig die Verbinungen auf/zu macht wird das erheblich langsamer als nen Connection-Pool sein. Wenn du auf der Startseite ein 20 MB-Bild hast ist die DB dagegen eher dein kleineres Problem...
nEmEsIs
nEmEsIs 13.10.2018 um 22:58:51 Uhr
Goto Top
Hi

Und du bist dir sicher das der Server ins schwitzen kam, weil so viele Besucher die Webseite angesehenhaben oder vll doch eher irgendwas was in dem WordPress ne Lücke gefunden hat und den Server was was auch immer gerade missbraucht ?

Mit freundlichen Grüßen Nemesis
certifiedit.net
certifiedit.net 13.10.2018 um 23:06:01 Uhr
Goto Top
Bin ich ganz bei dir. Wenn du nicht weißt, wir das zu handeln ist, hol dir jemand dazu.

Auf Wunsch kannst du gerne eine PN schreiben.
StefanKittel
StefanKittel 13.10.2018 um 23:21:53 Uhr
Goto Top
Hallo,

da gibt es viele Dinge zum schrauben.
Sowohl bei Apache, PHP als auch bei der DB gibt es viele Einstellungen bezüglich der möglichen Anzahl der Verbindungen.
Auch wie der Apache auf PHP zugreift (z.B. PHP-FPM) und wie die Verbindung zum DB-Server läuft.
Das die Last "springt" ist auch normal. Sobald die Last einen kritischen Punkt erreicht, steigt diese sofort dramatisch an.

Bevor man nun ins Blaue hinhein den DB-Server auslagert oder zusätzliche Apache-PHP-Nodes mit LB anschafft, sollte man eine Analyse der Struktur und einen Lasttest ausführen (lassen). Ein seperater DB-Server führt im 1. Schritt erstmal zu einer erhöhten Latenz durch die Netzwerkverbindung. Und ein ApachePHP-Cluster mit LB kann ein lustiger Zeitvertreibt bei Störungen von Cache und Sessions sein.

Lasttests fangen mit ApacheBench (ab) an und gehen bis zu Anbieter die bis zu 10.000 Browser weltweit simulieren können.

1. Ja, bei hoher Last verbessert das die Geschwindigkeit
2. LB mit SSL Offload (richtiger LB, nginx oder haproxy)
3. WebLog Expert und Excel

NewRelic ist auch immer ein guter Ansatz, aber nicht ganz günstig.

Viele Grüße

Stefan
coltseavers
coltseavers 13.10.2018 um 23:22:40 Uhr
Goto Top
Zitat von @certifiedit.net:

Bin ich ganz bei dir. Wenn du nicht weißt, wir das zu handeln ist, hol dir jemand dazu.
Auf Wunsch kannst du gerne eine PN schreiben.
Wofür ist denn bitte das Forum hier?
Um zu schreiben: "bla bla" gibts kostenlos und wer Hilfe braucht soll bezahlen, oder was soll die Anspielung mit PN?

Wenn Du helfen kannst, mach das hier im Forum, dann haben alle was davon.
StefanKittel
StefanKittel 13.10.2018 aktualisiert um 23:40:14 Uhr
Goto Top
Hallo,

was ich vergessen hatte.
10 Kerne können je nach Anbieter gar nichts bedeutetn.
Das Stichwort ist Überprovisionierung. Viele Verkaufen einfach mehr CPUs als sie haben weil die meisten ihre CPUs gar nicht verwenden.
Das ist "OK" solange genung Reserven da sind. Auch SSDs werden langsam so lange genug Leute gleichzig drauf arbeiten.

Stichworte sind auch Session, Cache im Speiche und nicht auf dem Dateisystem zu speichern (siehe Memcached).

Es könnte auch schlicht eine "schlechte" DB-Abfrage sein die den DB-Server überfordert oder Dead-Locks erzeugt.

Sonst must Du mit deutlich mehr Infos daherkommen.
Also configs von apache, vhost, php, db, web anwendung, etc.
Kann aber sein, dass der Aufwand einer Analyse ein Forum überfordert.

Stefan
Vision2015
Vision2015 14.10.2018 um 00:15:35 Uhr
Goto Top
Moin..
Zitat von @coltseavers:

Zitat von @certifiedit.net:

Bin ich ganz bei dir. Wenn du nicht weißt, wir das zu handeln ist, hol dir jemand dazu.
Auf Wunsch kannst du gerne eine PN schreiben.
Wofür ist denn bitte das Forum hier?
Um zu schreiben: "bla bla" gibts kostenlos und wer Hilfe braucht soll bezahlen, oder was soll die Anspielung mit PN?
na na na... er hat schon recht!

Wenn Du helfen kannst, mach das hier im Forum, dann haben alle was davon.
also wenn alle was davon haben sollen, mach mal den anfang...
zu sagen, der server ist ausgelastet, ist mir persönlich zu einfach!
was wir wissen wollen:
wieviel zugriffe hattest du zu diesen zeitpunkt?
wieviel zugriffe hast du normalerweise im durchschnitt?
welche seite /script wurde am meisten aufgerufen, und wie hoch war der traffic?
werden downloads angeboten?
nicht das ein WP Plugin deine kiste in den keller zieht, weil eine sql abfrage sich im kreis dreht!
hast du schon einen lastest gemacht, um zu sehen, ab wann dein blech in den keller geht?
Atomic ModSecurity Rules ON ?
php or cgi app ?
apache error log sagt was?
Reverse Proxy ?

Frank
maretz
maretz 14.10.2018 um 09:51:24 Uhr
Goto Top
Moin,

ganz Unrecht hat er aber nicht. Du verkaufst eine Dienstleistung an einen Kunden - du wirst ja auch nicht umsonst arbeiten. Da du auch schon länger hier bist weisst du wieviele Fragen hier so kommen von wegen "Habe beim Kunden das verkauft aber eigentlich keine Ahnung wie man das umsetzt - helft mir bitte". Und DA kann ich jeden verstehen der sagt das er eben dann dafür bezahlt werden möchte.

Und nein - das Forum ist nicht dafür da dem Kunden was zu verkaufen und hier dann die eigentliche Lösung umsonst abzugreifen. DANN könnte jeder hier auch sich einfach selbstständig machen. Das Forum ist dafür da jemanden Hilfe zu geben für eigene Probleme oder die Richtung für eine Lösung aufzuzeigen. Die ARBEIT muss der Fragesteller schon selbst machen - sonst gibt es keinen Lerneffekt noch gibt es sonst einen Grund dafür Arbeitslohn zu bekommen.

Aber es fehlen eh immer noch sämtliche Informationen um dir wirklich zu helfen. Einfach nur "Geht nicht" ist selten genug.
certifiedit.net
certifiedit.net 14.10.2018 um 11:59:14 Uhr
Goto Top
Und nein - das Forum ist nicht dafür da dem Kunden was zu verkaufen und hier dann die eigentliche Lösung umsonst abzugreifen. DANN könnte jeder hier auch sich einfach selbstständig machen.

Das ist doch das Betriebsgeheimnis einiger Admins hier.

Das Forum ist dafür da jemanden Hilfe zu geben für eigene Probleme oder die Richtung für eine Lösung aufzuzeigen.

Mit Grenzen, siehe oben.

Die ARBEIT muss der Fragesteller schon selbst machen - sonst gibt es keinen Lerneffekt noch gibt es sonst einen Grund dafür Arbeitslohn zu bekommen.

Gibt es in dem Fall überhaupt einen Grund für einen Arbeitslohn - oder Mietzins für die Website?
coltseavers
coltseavers 14.10.2018 aktualisiert um 20:13:10 Uhr
Goto Top
Zitat von @maretz:

Moin,

ganz Unrecht hat er aber nicht. Du verkaufst eine Dienstleistung an einen Kunden - du wirst ja auch nicht umsonst arbeiten. Da du auch schon länger hier bist weisst du wieviele Fragen hier so kommen von wegen "Habe beim Kunden das verkauft aber eigentlich keine Ahnung wie man das umsetzt - helft mir bitte". Und DA kann ich jeden verstehen der sagt das er eben dann dafür bezahlt werden möchte.

Und nein - das Forum ist nicht dafür da dem Kunden was zu verkaufen und hier dann die eigentliche Lösung umsonst abzugreifen. DANN könnte jeder hier auch sich einfach selbstständig machen. Das Forum ist dafür da jemanden Hilfe zu geben für eigene Probleme oder die Richtung für eine Lösung aufzuzeigen. Die ARBEIT muss der Fragesteller schon selbst machen - sonst gibt es keinen Lerneffekt noch gibt es sonst einen Grund dafür Arbeitslohn zu bekommen.

Aber es fehlen eh immer noch sämtliche Informationen um dir wirklich zu helfen. Einfach nur "Geht nicht" ist selten genug.


Hallo,
ich bin einfach nur ehrlich gewesen. Stattdessen hätte ich auch was von ehrenamtlicher Tätigkeit für einen Verein oder so schreiben können...

Die Schlaumeier hier hatten selbst natürlich noch nie Probleme beim Betrieb ihrer eigenen Server und stets die passende Antwort umgehend parat, sollte denn doch mal eines aufgetreten sein... bla blubb...

Ich finde der Zweck dieses Forum ist NICHT bezahlte Dienstleistungen zu erwerben oder zu verkaufen.
Jedem steht hier frei auf eine Anfrage zu antworten oder nicht. Wenn jemand einem Gewerbetreibendem Admin nicht kostenlos helfen möchte soll er halt ein Thema weiter klicken und jemandem helfen, der ehrenamtlich für einen Verein arbeitet. Aber hier auf Kundenfang zu gehen halte ich für fragwürdig - ob das im Sinne des Forumbetreibers ist könnte/sollte ich vielleicht mal in Erfahrung bringen...

Wenn ich in diesem Forum helfe bringe ich auch nicht erst in Erfahrung, ob der Fragende seine Lösung für Privat, als Angestellter oder Selbständiger sucht - aber das ist auch nur meine Einstellung zu der Sache. Scheint nicht jeder so zu sehen - schade!
certifiedit.net
certifiedit.net 14.10.2018 um 20:18:19 Uhr
Goto Top
Zitat von @coltseavers:

Zitat von @maretz:

Moin,

ganz Unrecht hat er aber nicht. Du verkaufst eine Dienstleistung an einen Kunden - du wirst ja auch nicht umsonst arbeiten. Da du auch schon länger hier bist weisst du wieviele Fragen hier so kommen von wegen "Habe beim Kunden das verkauft aber eigentlich keine Ahnung wie man das umsetzt - helft mir bitte". Und DA kann ich jeden verstehen der sagt das er eben dann dafür bezahlt werden möchte.

Und nein - das Forum ist nicht dafür da dem Kunden was zu verkaufen und hier dann die eigentliche Lösung umsonst abzugreifen. DANN könnte jeder hier auch sich einfach selbstständig machen. Das Forum ist dafür da jemanden Hilfe zu geben für eigene Probleme oder die Richtung für eine Lösung aufzuzeigen. Die ARBEIT muss der Fragesteller schon selbst machen - sonst gibt es keinen Lerneffekt noch gibt es sonst einen Grund dafür Arbeitslohn zu bekommen.

Aber es fehlen eh immer noch sämtliche Informationen um dir wirklich zu helfen. Einfach nur "Geht nicht" ist selten genug.


Hallo,
ich bin einfach nur ehrlich gewesen. Stattdessen hätte ich auch was von ehrenamtlicher Tätigkeit für einen Verein oder so schreiben können...

Die Schlaumeier hier hatten selbst natürlich noch nie Probleme beim Betrieb ihrer eigenen Server und stets die passende Antwort umgehend parat, sollte denn doch mal eines aufgetreten sein... bla blubb...

Ich finde der Zweck dieses Forum ist NICHT bezahlte Dienstleistungen zu erwerben oder zu verkaufen.
Jedem steht hier frei auf eine Anfrage zu antworten oder nicht. Wenn jemand einem Gewerbetreibendem Admin nicht kostenlos helfen möchte soll er halt ein Thema weiter klicken und jemandem helfen, der ehrenamtlich für einen Verein arbeitet. Aber hier auf Kundenfang zu gehen halte ich für fragwürdig - ob das im Sinne des Forumbetreibers ist könnte/sollte ich vielleicht mal in Erfahrung bringen...

Wenn ich in diesem Forum helfe bringe ich auch nicht erst in Erfahrung, ob der Fragende seine Lösung für Privat, als Angestellter oder Selbständiger sucht - aber das ist auch nur meine Einstellung zu der Sache. Scheint nicht jeder so zu sehen - schade!

auch bei einem Ehrenamtlichen Verein wäre die gleiche Antwort gefallen, denn auch da geht es darum, dass das Ding stabil und mit Know How betrieben wird. Denn gerade beim ehrenamtlichen Verein haben wir meist eine Masse an persönlichen Daten ggf. sogar sensibler als bei der 2-Mann Klitsche. Nicht desto trotz: Wenn du Dienste anbietest, die du nicht selbst managen kannst, solltest du auf Partner ausweichen, die das zur Verfügung stellen können. Hier wäre auch ein Ansatz den Hoster zu nehmen.
Vision2015
Vision2015 15.10.2018 um 07:37:05 Uhr
Goto Top
Moin...

so, jetzt mal zurück zum Thema...
hast du das mal nachgesehen?

was wir wissen wollen:
wieviel zugriffe hattest du zu diesen zeitpunkt?
wieviel zugriffe hast du normalerweise im durchschnitt?
welche seite /script wurde am meisten aufgerufen, und wie hoch war der traffic?
werden downloads angeboten?
nicht das ein WP Plugin deine kiste in den keller zieht, weil eine sql abfrage sich im kreis dreht!
hast du schon einen lastest gemacht, um zu sehen, ab wann dein blech in den keller geht?
Atomic ModSecurity Rules ON ?
php or cgi app ?
apache error log sagt was?
Reverse Proxy ?

zuzüglich zur frage, was für hardware wird vermendet... also CPU, RAM...

Frank
Norbertos
Norbertos 16.10.2018 um 08:50:37 Uhr
Goto Top
Was mir hier als Laie schon fehlt, noch vor CPU, RAM etc. ist doch die Analyse was überhaupt geschehen ist.
Also eine Analyse der entsprechenden Log-Dateien.
Da würde ich den ersten Schritt machen um überhaupt zu verstehen was oder wer diese Last verursacht hat. Alles andere ist doch nur ein herum basteln an Symptomen.
Genau so wurde mir es beigebracht und es ist schon ein wenig befremdlich wenn der TE dies nicht von sich aus macht.
Ein KFZler käme mit der Aussage "Mein Auto läuft nicht, woran liegt das?" auch nicht viel weiter.

Norbert
StefanKittel
StefanKittel 16.10.2018 um 08:53:27 Uhr
Goto Top
<humor>
Zitat von @Norbertos:
Ein KFZler käme mit der Aussage "Mein Auto läuft nicht, woran liegt das?" auch nicht viel weiter.
Natürlich. In der Werkstatt versuchen Sie Dir als erstes ein neues Auto zu verkaufen.
Das Alte ist ja schon so alt und das lohnt die Reparatur doch gar nicht mehr.
</humor>
wiesi200
wiesi200 16.10.2018 um 09:11:17 Uhr
Goto Top
Jetzt nicht zwagsläufig.
Ich gebe mich da mit dem Status der Webserver läuft nicht zufrieden.
Er soll möglichst Optimiert laufen alleine schon um die Aufbauzeit der Webseite zu minimieren.

Eine Loganalyse muss da natürlich schon sein. Nur gibt es Punkte die man pauschal zum optimieren durchführen kann.