Bots, Crawlers und Spiders (werden im weiteren Verlauf dieses Artikels als Bots zusammengefasst) durchstöbern alle Seiten, um z.B. die Auffindbarkeit in Suchmaschinen zu gewährleisten. Diese Zugriffe sind größtenteils sinnvoll und normal. Dennoch können zu viele Zugriffe von Bots, besonders in Stoßzeiten, zu einer hohen Serverauslastung führen und sogar zu kritischen Zuständen wie sehr lange Ladezeiten oder sogar einem Serverausfall führen. In solchen Situationen ist es dann besonders wichtig, die Webseiten für menschliche Besucher schnell wieder erreichbar zu machen.
Das EGOCMS bietet mehrere Maßnahmen, um die Zugriffe von Bots gezielt zu steuern.
Inhaltsverzeichnis
Einschränkungen über robots.txt
Sie können auf dem Server eine robots.txt Datei hinterlegen und hier Richtlinien für Bots definieren. Die Inhalte dieser Datei können Sie aber auch dynamisch über den EGOCMS Adminbereich verwalten. Erfahren Sie dazu hier mehr.
Einschränkungen über Meta Einstellungen
Pro Seite kann eingestellt werden, wie Bots mit dieser Seite umgehen sollen. Erfahren Sie dazu hier mehr.
Beachten Sie, dass die Auswertung der Einschränkungen über eine robots.txt und den Meta Einstellungen grundsätzlich von den meisten Bots berücksichtigt wird, aber es auch Bots geben kann, die diese ignorieren.
Bots bei hoher Serverauslastung blockieren
Das EGOCMS verwendet bei der Ausgabe einer Seite zwei Arten von Cache, um beim Zugriff unnötige Datenbankzugriffe zu vermeiden und die Ausgabe zu beschleunigen: die eigene Smarty Cache und den Nginx Cache (sofern als Webserver Nginx verwendet wird und dieser entsprechend konfiguriert ist).
Wenn Bots alle möglichen Seiten durchstöbern, besteht eine sehr hohe Wahrscheinlichkeit, dass dabei viele Seiten aufgerufen werden, die noch nicht/nicht mehr im Cache liegen. Dies kann ja nach der Menge an Bot Zugriffen und den zeitlichen Abständen dieser Zugriffe zu einer hohen Serverauslastung führen.
Das EGOCMS erkennt in solchen Fällen, dass die Serverauslastung sehr hoch ist und der Zugriff über einen Bot passiert, und blockiert diesen Zugriff. Dabei wird der HTTP Status Code 503 Service Unavailable und der Header Retry-After: 3600 gesendet (falls der Bot diesen Header auswertet, erfolgt der nächste Zugriff erst in einer Stunde).
Die Serverauslastung muss standardmäßig über 80% betragen, damit die Blockade ausgelöst wird. Über Verwaltung > System > Sicherheit > Bots blockieren bei hoher Serverlast kann diese Obergrenze angepasst werden.
Die Serverauslastung berechnet sich in Abhängigkeit der verfügbaren logischen Prozessoren auf dem Server, bzw. des Containers, falls eine Docker oder Kubernetes Umgebung verwendet wird. Diese Anzahl wird automatisch ermittelt.
Der EGOCMS Systemdienst, welcher minütlich über einen Cronjob ausgeführt wird, führt automatisch das Bash-Skript bin/tool/linux/top.sh aus. Hier findet die Berechnung der Serverauslastung statt. Bitte beachten Sie die Einrichtung des Systemdienstes. Sollte der Systemdienst nicht minütlich eingestellt sein, kann die Berechnung der Serverauslastung unter Umständen ungenau sein.
Die Ausführung dieser Bash-Skript für die Berechnung der Serverlast erfordert, dass das Tool jq installiert ist. Ist das Tool nicht installiert, für das Skript keine Berechnung aus.
Wird ein Standard EGOCMS Image verwendet, ist jq bereits vorinstalliert.
Die Ausführung der top.sh Datei legt standardmäßig die Datei var/log/top an (ausgehend von Ihrem EGOCMS Installationsverzeichnis). In dieser Datei steht die berechnete Serverauslastung des Containers der letzten vollen Minute und kann im Desklet Systemcheck eingesehen werden.
Die Ausführbarkeit des Bash-Skripts wurde für Ubuntu 22.04, 24.04 und SLES 15 getestet. Falls Ihre Serverumgebung die Ausführung des Skripts verhindert, können Sie die Berechnung der Serverauslastung über Verwaltung > System > Sicherheit deaktivieren. Beachten Sie, dass dann auch das Blockieren von Bots bei hoher Serverauslastung nicht funktioniert.