OpenLiteSpeed-Server auf EC2 läuft auf kleiner E-Commerce-Site ab

OpenLiteSpeed-Server auf EC2 läuft auf kleiner E-Commerce-Site ab

Ich hoffe, es geht Ihnen gut. Ich betreibe eine Wordpress-Site mit Woocommerce auf einem OpenLiteSpeed-Webserver, der bei starker PHP-Nutzung Timed-out-504-Fehler anzeigt. Ich hoste alles in AWS und habe Schwierigkeiten, die Ursachen der 504-Fehler zu identifizieren und herauszufinden, was verbessert werden könnte, um sie zu vermeiden. Hier sind einige Details:

AWS-Setup:

  • Der Webserver ist in einer t3.medium-Instanz mit Ubuntu 20.04 amd64 und 50 GB EBS-Speicher (E/A-Optimierung aktiviert) installiert. Derzeit werden etwa 10 GB verwendet.
  • Mit PHP 7.4 und
  • Ich verwende zwei CloudFront-Verteilungen für CDN: eine zum Servern von Bildern (in S3) und die andere zum Servern von CSS/JS-Dateien.
  • Ich habe einen ELB, um den Datenverkehr zum Webserver zu verwalten. Das Leerlauf-Timeout ist auf 300 Sekunden eingestellt.
  • Ich habe eine db.t3.small RDS-Instanz (100 GB gp2), auf der Mariadb 10.5.13 läuft, die Datenbankgröße beträgt etwa 1,5 GB.
  • Ich verwende Redis ElastiCache mit drei cache.t3.micro-Knoten.

Site-Statistiken:

  • Die Site hat ~1.000 Zugriffe pro Woche.
  • Etwa 350 Produktseiten und 50 Seiten.
  • Die Seitengröße reicht von 500 KB bis 13,5 MB.

Was ist das Problem?

  • Auf der Site tritt eine Zeitüberschreitung auf und es werden 504-Fehler ausgegeben, wenn umfangreiche PHP-Funktionen verwendet werden, z. B. beim Hochladen von Produkten (und Anhängen von Bildern daran), beim Hochladen von Bildern, durch mehrmaliges Leeren des OLS-Cache (ca. 3–4 Mal) innerhalb kurzer Zeit oder durch das Navigieren durch die Site, wobei mehrere Produktseiten geöffnet und die Produkte in den Einkaufswagen gelegt werden.
  • Die EC2-CPU-Auslastung zeigt maximale Spitzen von 99 %, aber die Netzwerkbandbreite scheint in Ordnung zu sein und erreicht maximale Spitzen von 2,0 GB, und die CPU-Guthaben bleiben stabil.
  • In Spitzenzeiten gibt es 50 Datenbankverbindungen pro Minute und die CPU-Auslastung schwankt zwischen 20 % und 30 %.
  • Der Burst-Kredit bleibt stabil.
  • stderr.log zeigt häufig „Maximales Limit für untergeordnete Prozesse erreicht: 35, extra: 0, aktuell: 35, beschäftigt: 35, bitte erhöhen Sie LSAPI_CHILDREN.“.

Screenshots (EC2-Instanz):

CPU-Auslastung%

Netzeingang + Netzausgang

CPU-Credits-Guthaben

Was ich bisher versucht habe:

  • Ich habe versucht, die maximale Anzahl an Verbindungen und untergeordneten Prozessen auf 350 zu erhöhen, aber das Zeitüberschreitungsproblem besteht weiterhin.
  • Ich habe das Speicherlimit von php.ini auf 512 MB erhöht, aber das hat keinen Unterschied gemacht.
  • Habe versucht, den Datenbankspeicher von 30 GB auf 100 GB zu erhöhen, ohne Erfolg.
  • Habe versucht, den EC2-Instanzspeicher von 30 GB auf 50 GB zu erhöhen, aber wieder ohne Erfolg.

Fragen/Hilfe benötigt:

  • Nach welchen Kennzahlen (und deren Aggregation) sollte ich basierend auf meinem Setup suchen, um die Ursachen für Zeitüberschreitungen zu ermitteln? AWS verfügt über so viele Informationen, dass ich nicht weiß, was wirklich den Ausschlag geben könnte.
  • Soll ich meine EC2-Instanz hochskalieren, um mehr CPU-Leistung zu erhalten? Oder soll ich meine RDS-Instanz hochskalieren? Oder gar nichts? Ich bin budgetbeschränkt, daher ist diese Option nicht wirklich praktikabel.
  • Gibt es eine Konfiguration auf dem Webserver, die ich ausprobieren könnte? Ich könnte meine Konfigurationsdatei hochladen, wenn das hilft.
  • Soll ich einfach alles auf ein Managed-Hosting verschieben und glücklich bis ans Ende meiner Tage leben?

Dank im Voraus

verwandte Informationen