Toon posts:

[Apache/PHP] Veel requests kunnen ontberen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Momenteel ben ik bezig met de voorbereidingen voor een nieuw project waarbij er sprake zal zijn van een situatie waarin de te ontwikkelen webapplicatie voortdurend veel request moet kunnen ontvangen en afhandelen. (Het betreft hier niet requests van gebruikers, maar van externe systemen die met intervallen van zeg maar een minuut of twee ieders een request uitvoeren.) Eén communicatiesessie zal van korte duur zijn en bevat een uitwisseling van gegevens van slechts een zeer beperkte omvang (vergelijk het met een iets uitgebreidere ping; veel meer is het niet).

In hoeverre kan PHP, draaiende onder Apache, worden ingezet om een dergelijke, toch wel vrijwel constante, stroom aan requests te kunnen verwerken? Zijn er benchmark analyses in dit kader beschikbaar die verschillende platformen naast elkaar zetten?

  • Xorgye
  • Registratie: Maart 2005
  • Laatst online: 05-10-2024
Tja... PHP is een geinterpreteerde taal... het zal dus veel minder efficient zijn dan als je zelf een simpele server programmeerd.

Benchmarks kunnen je helpen, maar misschien kun je beter op een rijtje zetten hoeveel tijd je kwijt wilt zijn aan eventuele software, wie de mogelijkheid heeft om wat te bouwen, hoe snel je servers zullen zijn, hoeveel requests je daadwerkelijk krijg (en of de server dat uberhaubt wel aan kan)...

PHP is leuk zo lang je maar weet dat het niet om snelheid gaat maar om het gemak.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Ik weet niet of je PHP-script nog veel moet doen om zo'n request te beantwoorden?

In de meeste gevallen denk ik dat mod_php via Apache dit prima trekt. Anders zou je eens kunnen kijken naar PHP bytecode caches (bijvoorbeeld APC) of PHP draaien via lighttpd in plaats van Apache.

Rustacean


Verwijderd

Topicstarter
Xorgye schreef op zaterdag 22 april 2006 @ 12:48:
Tja... PHP is een geinterpreteerde taal... het zal dus veel minder efficient zijn dan als je zelf een simpele server programmeerd.

Benchmarks kunnen je helpen, maar misschien kun je beter op een rijtje zetten hoeveel tijd je kwijt wilt zijn aan eventuele software, wie de mogelijkheid heeft om wat te bouwen, hoe snel je servers zullen zijn, hoeveel requests je daadwerkelijk krijg (en of de server dat uberhaubt wel aan kan)...

PHP is leuk zo lang je maar weet dat het niet om snelheid gaat maar om het gemak.
Nou, het gaat mij niet zozeer om de snelheid, aangezien één communicatiesessie in het teken zal staan van pak hem beet slechts 500 bytes aan gegevensuitwisseling. Het gaat mij daarentegen vooral om betrouwbaarheid. Kan PHP (met Apache) een voortdurende stroom requests aan (met intervallen), waarbij ook veel requests tegelijk kunnen worden uitgevoerd?

Stel er zijn 5000 externe bronnen. Deze starten ieder om de 2 minuten een korte sessie met de webapplicatie om gegevens uit te wisselen (+/- 500 bytes). Sommige van deze clients voeren gelijktijdig een request uit en andere niet. Kortom: het gaat maar door en door en de server heeft eigenlijk nooit 'rust'. Kan voor dit doel PHP (met Apache) worden gebruikt?

Verwijderd

Topicstarter
Manuzhai schreef op zaterdag 22 april 2006 @ 12:55:
Ik weet niet of je PHP-script nog veel moet doen om zo'n request te beantwoorden?

In de meeste gevallen denk ik dat mod_php via Apache dit prima trekt. Anders zou je eens kunnen kijken naar PHP bytecode caches (bijvoorbeeld APC) of PHP draaien via lighttpd in plaats van Apache.
Nee, het PHP script stelt niets voor. Het enige wat het PHP script zal doen is checken of de inkomende aanroep geldig is (doormiddel van een authenticatiesleutel). Is dat niet het geval dan volgt een errorcode als antwoord. Is de aanroep geldig, dan worden een vijftal meegegeven variabelen zonder verdere verwerking in de database opgeslagen. Het is dus in feite een zeer recht toe recht aan script zonder moeilijke routines.

Verwijderd

Apache en PHP moet dat uitstekend kunnen trekken. De principe die je noemt wordt namelijk ook veelvuldig gebruikt in AJAX applications, die eigenlijk op de door jou genoemde principe gebaseerd is.

Met de beschreven script moet dat makkelijk lukken. Dat is bijna peanuts voor de server lijkt me. Pas als je zwaardere scripts (veel zwaarder) veel en snel achter elkaar uitvoert zou je beter een server kunnen programmeren.

[ Voor 37% gewijzigd door Verwijderd op 22-04-2006 13:02 ]


Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 22 april 2006 @ 13:00:
Apache en PHP moet dat uitstekend kunnen trekken. De principe die je noemt wordt namelijk ook veelvuldig gebruikt in AJAX applications, die eigenlijk op de door jou genoemde principe gebaseerd is.
Ok, maar de druk die AJAX applicaties uitoefenen op de webapplicatie is afhankelijk van het gebruik en dat gebruik zal over één dag gezien nooit consequent veelvuldig zijn.

In mijn geval is het daarentegen zo dat één externe bron vanaf het moment dat deze wordt aangezet voortdurend met tussenpozen van 2 minuten communiceert met de webapplicatie en dat het aantal externe bronnen zal oplopen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Ik gebruik een dergelijke setup voor een MUD (soort van textbased RPG) die een vriend van me gemaakt heeft en waarvan ik de website beheer. Die MUD geeft heel veel verschillende info door aan de site, waardoor ik eigenlijk continu in verbinding ben met die MUD. PHP heeft verder niets met de afhandeling van requests te maken, dus dat is geen issue. En Apache krijgt het voor elkaar om de grootste sites met heel veel bezoekers te serveren, dus dat lijkt me geen enkel probleem. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Ik weet niet hoe moeilijk het is om een testversie van het script te schrijven, maar gooi er een apachebench overheen met een leuke concurrency en je hebt een heel behoorlijk inzicht. Als het een beetje efficient geprogd is en de 5000 hits komen niet in één keer langs dan zou het goed moeten gaan, afhankelijk van je hardware e.d. Met een dualcore of iets dergelijks krijg je voor weinig al een stuk meer power en zou het alweer een stuk makkelijker moeten kunnen.

Als je kijkt naar de statistieken van de Tweakers.net dozen, die zware dynamische content uit staan te kauwen, dan zie je dat die zonder veel moeite 100 req's per seconde doen. Tel het verder maar uit :)

Verwijderd

Topicstarter
Ok, dan denk ik dat PHP inderdaad een geschikte oplossing is.

Maar daarnaast bekruipt mij een wat vervelend gevoel, want het project waar dit voor bedoeld is, is vrij groots en er hangt een grote commerciële visie achter. Hoewel ik gecharmeerd ben van PHP en er ook graag mee werk, heb ik daarnaast het gevoel dat het vooral een hobbytaal is en niet bepaald geschikt voor de volwassen systemen (al was het alleen maar vanwege de reputatie). Met andere woorden: ik zou al bijna willen kiezen voor een ander platform zoals Java, omdat daarmee het karakter van het project serieuzer wordt naar mijn idee. Althans, naar de buitenwereld toe.

[ Voor 3% gewijzigd door Verwijderd op 22-04-2006 13:14 ]


Verwijderd

Die discussie is al ettelijke malen gevoerd, uitgekauwd en bevochten: pak de tool die jíj het beste geschikt vindt :) In alle talen kan je broddelwerk leveren, of je het doet is je eigen zaak :)

[ Voor 25% gewijzigd door Verwijderd op 22-04-2006 13:19 ]

Pagina: 1