Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

httpd - keepalive - max connections

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweakers,

Ik weet niet of dit de juiste cat. is maar ik heb hem hier geplaatst
Ik heb nu 2 servers draaien voor 1 website (1 voor mysql, de andere doet httpd etc)

Nu heb ik soms last van mensen die extreem F5en en flooden etc, hoe is dit dmv php.ini of iets dergelijks iets te verbeteren?

Er zijn dagelijks een aantal honderd mensen tegelijk online die samen heel erg veel pagina's bekijken achter elkaar (een online spelletje, txt based)

Hoe kan ik het zo instellen dat bij een aantal connecties de persoon een tekst krijgt te zien of iets dergelijks?

Alvast bedankt! :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 10 februari 2008 @ 14:53:
Beste Tweakers,

Ik weet niet of dit de juiste cat. is maar ik heb hem hier geplaatst
Als je het niet zeker weet dan hebben we daar altijd een leidraad voor: Waar hoort mijn topic? ;)
Verwijderd schreef op zondag 10 februari 2008 @ 14:53:
Ik heb nu 2 servers draaien voor 1 website (1 voor mysql, de andere doet httpd etc)

Nu heb ik soms last van mensen die extreem F5en en flooden etc, hoe is dit dmv php.ini of iets dergelijks iets te verbeteren?
Wat heb je al gezocht? Gevonden? Geprobeerd? Etc.
Verwijderd schreef op zondag 10 februari 2008 @ 14:53:
Er zijn dagelijks een aantal honderd mensen tegelijk online die samen heel erg veel pagina's bekijken achter elkaar (een online spelletje, txt based)

Hoe kan ik het zo instellen dat bij een aantal connecties de persoon een tekst krijgt te zien of iets dergelijks?
Again: Wat heb je al gezocht? Gevonden? Geprobeerd? Etc.

Anyway, dit heeft niks met SEA te maken; gezien je om PHP oplossingen vraagt zet ik het even, onder voorbehoud, in PRG.

[ Voor 10% gewijzigd door RobIII op 10-02-2008 15:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Sorry my bad!

Ik heb gegoogled maar kom vooral op mysql dingen uit qua max connections etc.
Ik doel hier echt op httpd ;).

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Die mensen hebben allemaal maar een of een paar (multi-threading) connecties die ofwel even open blijven (keepalive) en dan dus hergebruikt worden ofwel meteen dicht staan.

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Topicstarter
Ja klopt, alleen ik zoek een setting dat als je bijvoorbeeld zou F5én, of flooden dat je dan een melding krijgt of een soort 404 pagina te zien krijgt ;)

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Dat zul je in je programmacode moeten doen.

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Er is vaak aan de headers te zien of het om een F5 gaat of niet. Daar kan Apache ook wel iets mee. De vraag is alleen wat je wilt dat er dan gebeurt. Aangezien je PHP gebruikt is het handiger dit in je PHP scripts af te vangen, en vóórdat je zware dingen doet, zoals configuratiebestanden inlezen of een database verbinding maken, die check uitvoert en eventueel een melding teruggeeft. Je zou hierbij geen andere headers moeten sturen dan een 20x, ik zou zeggen dat een 204 header ideaal is, gezien de client geacht wordt de oude pagina te laten zien. De vraag is hoe dat in praktijk werkt...

Verwijderd

Topicstarter
Dit lijkt me toch iets ingewikkelder dan gedacht helaas.
Mensen hier zelf ervaring mee?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Hoewel ik het wel met Cheatah eens ben is php starten ook een zwaar ding, dus als je dat nog kan voorkomen is dat wel prettig.

Er zijn voor apache diverse modules die de connecties limiteren (zoekterm 'limit'). Je zal alleen wel moeten onderzoeken of het middel niet erger is dan de kwaal, want het bijhouden en afdwingen van dergelijke limieten zal ook geen triviaal stukje code zijn.

Verder kan het zin hebben om domweg je keep-alive uit te zetten in apache zodat je geen last hebt van connecties die open blijven staan.

Maar in jouw setup kan het wel nuttiger zijn om de boel in je php-code te regelen.

Verwijderd

Hoe zou je dit moeten oplossen?
  • Bekijk welke headers bij een normale (niet-F5) request worden meegestuurd.
  • Bekijk welke headers bij een F5 worden meegestuurd.
  • Bekijk welke headers bij een Ctrl-F5 worden meegestuurd.
Doe dit in alle browsers die je wilt ondersteunen. Nu weet je waarop je moet selecteren.
PHP:
1
2
3
4
if ( $melp ) {
   header ( 'HTTP/1.0 204 No Content' );
   exit ();
}

Ik vermoed dat dit ook wel kan met allee Apache directives.

[ Voor 6% gewijzigd door Verwijderd op 10-02-2008 15:35 ]


Verwijderd

Maar in hoeverre is je apache conf goed geconfigureerd. Kunnen er genoeg apache processen aangemaakt worden? Is de keep alive timeout niet te hoog / niet te laag? Is je globale timeout niet te hoog? Heeft de server nog kracht over, en dus staan zijn instellingen te laag?

Methoden om request te limiteren lijkt mij toch het laatste wat je echt wilt. Client caching is wellicht ook nog een oplossing (waar hierboven ook al over gesproken is).

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Waarom probeer je een DOS via de webserver op te lossen? Waarom maakt je niet gebruik van een firewall? De linux firewall heeft standaard support voor shaping. Dan kun je dus instellen dat er vanaf een IP maximaal 3 gelijktijdige connecties zijn naar je webserver per 3 seconden.

Het probleem met F5 is misschien simpel te detecteren, maar wat dacht je van script kiddies die alleen maar connecties openen naar je webserver en vervolgens geen request doen. Geen request = betekend dat PHP niet geladen wordt en kun je het ook niet afvangen.

De webserver verbreekt de verbinding automatisch na de keepalive timeout. Er zijn trouwens ook nog een aantal andere apache timeout settings welke je kunt configureren. Echter een limiet in de firewall verkomt simpelweg dat er teveel connecties vanaf 1 IP gemaakt kunnen worden.

Ook flood protection is een onderdeel van de iptables / TC (Traffic Control). In eerste instantie 'vertraag' je de connecties naar de webservers op een vergelijkbare manier zoals een bouncer bij een discotheek de toegang regelt. Als er 1 uitgaat, mag er 1 naar binnen. Standaard houden de meeste TCP applicaties een timeout van 30 seconden aan.

Echter je kunt ook een rule aanmaken welke een hoger aantal connecties detecteert (bijvoorbeeld 15 connecties vanaf een IP per 3 seconden) en zodra die rule matched actief toegang blokkeren.

Bij mijn vorige werkgever volgde wij een vergelijkbare tactiek tijdens politieke verkiezingen.

If it isn't broken, fix it until it is..


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op zondag 10 februari 2008 @ 14:53:
Nu heb ik soms last van mensen die extreem F5en en flooden etc, hoe is dit dmv php.ini of iets dergelijks iets te verbeteren?
Op welke manier heb je daar last van en hoe weet je dat de oorzaak in het F5'en ligt?

Wie trösten wir uns, die Mörder aller Mörder?

Pagina: 1