Zugriffe auf 1 Request / sek beschränken

Apache, Lighttpd, nginx, Cherokee
stefangl
Posts: 4
Joined: 2009-04-23 20:14

Zugriffe auf 1 Request / sek beschränken

Post by stefangl » 2009-05-07 11:53

Hallo,

ich habe ein PHP-Skript, dass von extern abgefragt wird und Ergebnisse aus einer DB zurückliefert. Zu "normalen" Stunden Im Schnitt kommen 1200 Abfragen pro Stunde. Zu Spitzenzeiten steigen die Abfragen auf knapp 6000 Abfragen pro Stunde. Dementsprechend kommt die Datenbank unter Last und schaukelt sich hoch.

Kann ich z.B. mit IPTables eine Regel erstellen, welche die Anzahl der Abfragen einer gewissen IP auf Port 80 pro Sekunde auf max. 3 beschränkt?
Wenn ja, wie würde diese Regel lauten?

Wenn nein, welche anderen Möglichkeiten gibt es noch? Einen "Load"-Stop habe ich schon eingebaut, d.h. wenn die Server-Last auf über 3 steigt, werden keine Anfragen mehr an die DB weitergereicht. Allerdings greift dieser Stop ggfs. nur alle Minute, weils momentan via Cronjob läuft.


Vielen Dank für evtl. Ideen

LG,
Stefan

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Zugriffe auf 1 Request / sek beschränken

Post by Roger Wilco » 2009-05-07 14:43

Ist jede der Datenbankabfragen einzigartig oder bekommen viele Clients letztendlich das gleiche Ergebnis bzw. lässt sich das Ergebnis aus kleineren Teilmengen generieren? Falls letzteres der Fall ist, wäre das ein Paradefall für geeignetes Caching...

Ansonsten gibt es z. B. mod_cband für den Apache httpd oder das limit Modul für Netfilter/iptables.

stefangl
Posts: 4
Joined: 2009-04-23 20:14

Re: Zugriffe auf 1 Request / sek beschränken

Post by stefangl » 2009-05-07 14:49

Roger Wilco wrote:Ist jede der Datenbankabfragen einzigartig oder bekommen viele Clients letztendlich das gleiche Ergebnis bzw. lässt sich das Ergebnis aus kleineren Teilmengen generieren? Falls letzteres der Fall ist, wäre das ein Paradefall für geeignetes Caching...


Jede Abfrage ist einzigartig. Und falls doch mal ein Doppler zustandekommt, greift immerhin das Caching von MySQL. Alle anderen Caching-Mechanismen scheiden aus.

Ansonsten gibt es z. B. mod_cband für den Apache httpd oder das limit Modul für Netfilter/iptables.


mod_cband hab ich versucht, allerdings hab ich das nicht zum laufen gekriegt. Die Lösung mit iptables würde mir besser gefallen, allerdings bin ich zu sehr DAU, um ne entsprechende Regel anlegen zu können. Vielleicht kann es hier ja jemand?

LG,
Stefan

gierig
Posts: 286
Joined: 2002-10-15 16:59
Location: WHV

Re: Zugriffe auf 1 Request / sek beschränken

Post by gierig » 2009-05-07 17:25

Ist nicht böse gemeint. Aber dann solltest du dir das Nötige wissen schnell aneignen.
Vorkauen war noch die Stärke dieses Forum. Grade beim einsatz
von Iptables is wissen gefragt, da es auf dein System und deine Anforderngen
zugeschnitten sein mus und niemals allgemein gelten kann.

http://www.netfilter.org/documentation/ ... WTO-7.html
http://de.wikibooks.org/wiki/Linux-Komp ... _IP-Tables
Sehr schön auch das IPTables Buch ISBN: 978-3827321367

Kleiner Tip Interesannt für dich ist die Limit Erweiterung

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Zugriffe auf 1 Request / sek beschränken

Post by Roger Wilco » 2009-05-07 21:40

Zusätzlich zu den genannten Links würde ich noch http://iptables-tutorial.frozentux.net/ ... orial.html empfehlen.