Snees (05.07.2013)
-
05.07.2013, 18:21 #1
Viele Seitenaufrufe, ServerLoad minimieren
Ich bin's schon wieder
Aktuell habe ich ein kleines Problem was den ServerLoad bei vielen Seitenaufrufen betrifft. Ich habe mir ein kleines Tool geschrieben, um das Ganze mal zu testen.
Fazit: 1500 Aufrufe innerhalb weniger Sekunden = ServerLoad >50. Ich habe dann bei einem Load von 70 abgebrochen.
Das Tool funktioniert so: Ich ziehe mir eine Liste von Proxys und rufe mit diesen Proxys dann die URL auf, funktioniert der Proxy, wird die Seite so lange mit diesem Proxy aufgerufen, bis der Proxy nicht mehr funktioniert. Währenddessen werden weitere Proxys geladen usw. Es sind also viele Seitenaufrufe von vielen verschiedenen IPs.
Wie blockiere ich am besten Verbindungen von IPs, die so oft eine Seite in so kurzer Zeit aufrufen?
Wie minimiere ich den ServerLoad während einem solchen 'Angriff'?
Danke
-
05.07.2013, 18:25 #2
AW: Viele Seitenaufrufe, ServerLoad minimieren
Stichwort: iptables, damit kannst du Regeln entwerfen, die die IP-Adressen filtern und dementsprechend behandeln (blockieren/zulassen). Weitere Infos:
Schutz bei (D)DOS Angriffen mit Iptables - Administrator's Blog
DDOS Deflate Script – Prevent Attacks using Iptables or SPF » Jack Huang
http://u-hacks.net/server-administra...griffen-15005/
GrüßeGeändert von Devon (05.07.2013 um 18:29 Uhr)
-
05.07.2013, 18:29 #3
- Registriert seit
- 15.11.2011
- Beiträge
- 8.018
- Blog Entries
- 5
Thanked 9.387 Times in 3.225 PostsAW: Viele Seitenaufrufe, ServerLoad minimieren
Jo weil dein Server ungeschützt und/oder vollkommen fehlkonfiguriert ist. Hat man bei CN gesehen: Paar Sekunden F5 gedrückt gehalten und der Load war so hoch, dass mybb dicht gemacht hat.
Firewall, zb iptables. Manche Webserver (zb nginx) können dazu auch Regeln erstellen, dass ab einer gewissen Anzahl an Anfragen in einer bestimmten Zeit nur noch ein 400er ausgeliefert wird. Primär sollte das aber die Firewall machen, ein Webserver ist eigentlich nicht dazu da so was abzuwehren. Funktioniert natürlich auch nur, so lange die Anbindung das mitmacht.
Am besten, in dem die betreffende Clients blockiert werden, bevor sie groß Ressourcen in Anspruch nehmen. Ansonsten kann caching das ganze auch reduzieren.
-
The Following User Says Thank You to DMW007 For This Useful Post:
-
05.07.2013, 18:48 #4
AW: Viele Seitenaufrufe, ServerLoad minimieren
Jo weil dein Server ungeschützt und/oder vollkommen fehlkonfiguriert ist.
Paar Sekunden F5 gedrückt gehalten und der Load war so hoch
Primär sollte das aber die Firewall machen, ein Webserver ist eigentlich nicht dazu da so was abzuwehren
Habt ihr weitere Tipps?
-
05.07.2013, 20:29 #5
AW: Viele Seitenaufrufe, ServerLoad minimieren
cachen
Am besten du lässt mal jemanden drüber gucken, hat bestimmt jemand zeit.Geändert von Ta1lor (05.07.2013 um 20:30 Uhr)
-
06.07.2013, 14:50 #6
AW: Viele Seitenaufrufe, ServerLoad minimieren
cachen
Welche Möglichkeiten gibt es noch?
-
06.07.2013, 15:58 #7
-
27.12.2013, 11:17 #8
- Registriert seit
- 15.11.2011
- Beiträge
- 8.018
- Blog Entries
- 5
Thanked 9.387 Times in 3.225 PostsAW: Viele Seitenaufrufe, ServerLoad minimieren
Ist zwar schon etwas älter, aber: Nein macht es nicht. Sollte man auch selbst feststellen, wenn man sich mal die PHP-Apis von beiden anschaut. Memcache ist skalierbarer, da du einen Cluster von Memcache-Servern betreiben kannst. Das macht aber logischerweise nur bei größeren Projekten Sinn, wo dementsprechend mit mehreren Servern davon profitiert werden kann. Sofern alles auf einem Server liegt, hast du eher Overhead durch die TCP-Verbindungen. Daher macht hier xCache mehr Sinn. Zumal mit Memcache nur Daten in den RAM legen kann. xCache legt auch compilierte PHP-Dateien in den RAM, sofern das möglich ist (also keine Nutzung dynamischer Werte wie zb time() oder so was). Dir sollte aber klar sein, dass beide in der jeweiligen PHP-Anwendung integriert werden müssen. Ist diese nicht dafür ausgelegt, bringt xCache nur teilweise etwas und Memcache gar nichts. Der wesentliche Sinn liegt ja darin, den Datenbankserver zu entlasten, in dem die Ergebnisse im RAM zwischengecached werden. Sprich überall wo es Sinn macht müsste von der Logik her so was eingebaut werden:
Code:function getHeader() { $key = 'headerTemplate'; if(!cache::isset($key)) { $headerTemplate = $db->query('SELECT ...'); cache::set($key, $headerTemplate); return $headerTemplate; } return cache::get($key); }
Am performantesten sind reverse Proxys wie varnish (https://www.varnish-cache.org/). Die setzt du auf Port 80, entsprechend konfiguriert holen sie sich die komplette Page vom Backend und laden sie in den RAM. Ab dem 2. Abruf liefert Varnish dann die Seite selbst aus dem Cache aus. Ist etwas aufwändiger einzurichten und muss je nach eingesetzter Software angepasst werden. Da die komplette HTML-Ausgabe gecached wird, geht die Anfrage also gar nicht mehr erst an PHP. Wenn das der Fall ist, ist das ganze also deutlich performanter als xcache oder memcache. Der Nachteil ist, dass eben die komplette Seite gecached wird. Je nach eingesetzter Software kann das ein Vor- oder Nachteil sein. Für einen Wordpress-Blog wo 99% der Requests von nicht eingeloggten Usern kommen wäre es zb ein Vorteil, da kann fast alles gecached werden. In vBulletin macht das nur für Gäste Sinn, da sonst userspezifische Daten wie Benachrichtigungen oder der Username des jeweiligen Users gecached werden würden.
Ist ein komplexeres Thema, wo man sich nicht mal eben in 20min einarbeiten kann. Je nachdem was gehostet werden soll macht zudem das eine mehr Sinn als das andere, manchmal ist auch eine Kombination sinnvoll.
Ähnliche Themen
-
Seitenaufrufe erhöhen - Wie?
Von Dynamoking im Forum WebmasterAntworten: 8Letzter Beitrag: 13.09.2013, 11:13 -
Neu: "Private Chats"-Fenster minimieren!
Von Marc im Forum Knuddels-NewsAntworten: 8Letzter Beitrag: 30.10.2012, 06:10 -
Seitenaufrufe einer Seite erhöhen
Von !lkay im Forum WindowsAntworten: 2Letzter Beitrag: 08.01.2012, 22:20
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.