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 »

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
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Zugriffe auf 1 Request / sek beschränken

Post by Roger Wilco »

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 »

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: 297
Joined: 2002-10-15 16:59
Location: WHV
 

Re: Zugriffe auf 1 Request / sek beschränken

Post by gierig »

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
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Zugriffe auf 1 Request / sek beschränken

Post by Roger Wilco »

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