IT / Web

Apache-Webserver durch PHP ausgelastet (Shared Webhosting)

Eigentlich ist es etwas was einen freuen sollte: Plötzlich verirren sich 500 Benutzer gleichzeitig auf eine der eigenen Webseiten. Dies kam damals auch schon mal vor, als die entsprechende Webseite noch bei Strato lag. Zu dem Zeitpunkt war das außer bis auf leichte Performance-Einbußen kein Problem. Was ich allerdings vergessen habe zu berücksichtigen: Damals bestand die Seite rein aus html-Dateien! Mittlerweile ist es aber ein eigenes Mini-CMS in PHP, welches ich selber geschrieben habe. Eine Möglichkeit diese Auslastung etwas abzufedern bekommst du in diesem Artikel!

Ursache für die Auslastung durch PHP

Laut Aussage des Hosters „All-Inkl“ könnte dies daran liegen, dass zu viele gleichzeitige PHP-Prozesse liefen oder aber 150 gleichzeitige Verbindungen zum Server bestanden. Den Besucherpeak konnte man in Google Analytics sehr gut sehen:

Anscheinend ist dies das Limit für das Shared Hosting bei All-Inkl. Schade, denn wirklich viel haben die PHP-Skripte gar nicht zu tun. Denn ich habe ein Caching eingebaut und die fertigen html-Dateien liegen sowieso schon in einem tmp-Ordner. Der Inhalt der tmp-Dateien muss also nur noch ausgegeben werden, sofern die entsprechende URL aufgerufen wird. Dies beansprucht also die MySQL-Datenbank gar nicht. Die Last dürfte also ähnlich wie bei einem Flat-File-System wie Kirby oder Grav sein. Vermutlich ist die eigene Matomo-Installation hier auch nicht förderlich, da diese auch in PHP läuft und dauernd Skripte ausführt.

 

Caching ohne PHP als mögliche Lösung?

Man könnte jetzt sagen: Dann zieh doch auf einen eigenen Server. Aber das lohnt sich bisher nicht wirklich. Einen solchen Besucher-Peak gab es bisher, zumindest seit Ermittlung der Besucherzahlen, erst zweimal.

Die einzige Möglichkeit, die mir einfällt, auch wenn dies etwas extrem ist, ist der Rückgang auf eine komplett undynamische Variante, wo einfach nur html-Dateien ausgeliefert werden. Sofern der Webserver nur Dateien ausliefert, sollte dies vermutlich die Problematik soweit eingrenzen, dass es maximal etwas langsamer werden sollte bei solch einem Besucheransturm.

Da dies im Fall der betroffenen Webseite nur einen Themenbereich mit etwa 30 Unterseiten betrifft die für den Traffic sorgen, werde ich nur diese Seiten direkt abspeichern. Bei einem Test hat sich ergeben, dass die Seiten nicht mal die Endung .html oder .htm benötigen. Deshalb würde ich diese dann z. B. wie folgt exportieren: /thema1/unterseite1 – ganz ohne Dateiendung, sondern so wie sie sonst auch durch das PHP-Skript erreichbar wären.

Hierfür ist nur zwingend eine Ausnahmeregel in der .htaccess-Datei vor dem Redirect an die index.php nötig, welche dafür sorgt, dass zuerst geprüft wird ob sich unter der aufgerufenen URL eine Datei finden lässt:

Diese Regel sollte im Normalfall bereits gesetzt sein, da ohne diese der Aufruf von Bildern etc. sonst wohl gar nicht mehr funktionieren würde.

 

Fazit

Dies ist eine eher „unbefriedigende“ Misch-Masch-Lösung. Aber vermutlich werde ich dies zumindest vor der nächsten Auslastung so versuchen in den Griff zu bekommen. Leider scheint das Shared Hosting für einen solchen Besucheransturm definitiv nicht geeignet zu sein. Insbesondere nicht in Verbindung mit einem CMS bzw. PHP-Skripten.

 

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert