PHP of Apache echo() erg traag

Pagina: 1
Acties:

  • gvtulder
  • Registratie: December 2001
  • Laatst online: 27-12-2024
Ik weet niet of het aan PHP of aan Apache ligt, maar wel dat het een vreemd probleem is. Wat er aan de hand is is het volgende (om het probleem te verduidelijken heb ik het PHP-script sterk vereenvoudigd):

Er is een PHP-script dat niets anders doet dan een tekst van ongeveer 44 kB weergeven en meten hoe lang dat duurt. Op mijn eigen computer, Athlon 600 met Apache, PHP en Windows 2000, en een Linux-testserver, Apache, PHP en een 486 processor, duurt dit slechts een fractie van een seconde.

Het zelfde script uitgevoerd op een 1000MHz server met Apache/1.3.20 (Unix) (Red-Hat/Linux) PHP/4.0.6 duurt maar liefst 2 seconden. Dat lijkt mij erg lang.

Heeft iemand enig idee waar dit aan kan liggen?

gvtulder.f2o.org


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waar staat die 1Ghz server?

En hoe druk heeft die het?

  • gvtulder
  • Registratie: December 2001
  • Laatst online: 27-12-2024
Die staat op school achter de Kennisnet-reverse-proxy. Hij heeft zo goed als niets te doen. Er staat geloof ik wel iets als dnetc op, maar dat hoeft volgens mij niet zo heel veel uit te maken.

gvtulder.f2o.org


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

vraag de load eens op??

Doet iets met Cloud (MS/IBM)


  • Config
  • Registratie: Januari 2000
  • Laatst online: 06-01-2025
gewoon ff kijken met top?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 10 februari 2002 13:39 schreef Config het volgende:
gewoon ff kijken met top?
PHP:
1
2
3
<?
 $uptime = (exec("uptime")); echo "$uptime";
?>

Doet iets met Cloud (MS/IBM)


  • gvtulder
  • Registratie: December 2001
  • Laatst online: 27-12-2024
Of met phpSysInfo, ook leuk.

Hier komt ie dan: 1.04 1.05 1.23

gvtulder.f2o.org


Verwijderd

DNETC.... daar heb je al een probleem.
Die clients pikken nogal veel tijd in.
Welliswaar wordt er altijd terug geschakeld om processor tijd vrij te krijgen, maar hier zit altijd een respons tijd aan vast. (In mijn ervaring) waardoor het geheel langzamer gaat draaien.

Verder kan het ook zijn dat de Reverse DNS niet werkt,
waardoor de APACHE blijft wachten op IP -> Name conversion (dit duurt echter meestal langer als 'slechts' 2 seconde)

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 02:55

Kettrick

Rantmeister!

Op zondag 10 februari 2002 14:34 schreef underdog78 het volgende:
Verder kan het ook zijn dat de Reverse DNS niet werkt,
waardoor de APACHE blijft wachten op IP -> Name conversion (dit duurt echter meestal langer als 'slechts' 2 seconde)
PHP wordt pas geparsed als de webserver de remote host gevonden heeft.

Even voor de duidelijkheid, duurt het 2 seconden voordat de pagina er staat, of duurt het parsen van php 2 seconde ?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 10 februari 2002 14:34 schreef underdog78 het volgende:
DNETC.... daar heb je al een probleem.
Die clients pikken nogal veel tijd in.
Welliswaar wordt er altijd terug geschakeld om processor tijd vrij te krijgen, maar hier zit altijd een respons tijd aan vast.
Daar merk je dus helemaal niks van he?

Zeker geen 2 seconden.
Waarschijnlijk zit het probleem hem in het volgende:
Server bakt htmlpage (kost tijd, niet al te veel), proxy pakt page aan en cached die (moest hem dus eerst van de server downloaden, kost wederom tijd ook weer niet echt veel) en vervolgens moet de page geupload worden naar jou.

Dat opgeteld kan genoeg tijd kosten, daarnaast moet de tekst ook nog eens door jou gedownload worden.

Wat je eens kan testen is het volgende:
Genereer een pagina met behulp van de ob_* functies. Dan wordt er nog niets opgestuurd, kijk hoe lang het duurde tot dat je ob_endflush (oid) roept en kijk dan nog even hoe lang het duurde om die endflush uit te voeren.

  • gvtulder
  • Registratie: December 2001
  • Laatst online: 27-12-2024
Nee, het is niet de tijd tussen het opvragen en het op het scherm verschijnen, het is alleen de tijd die PHP nodig heeft om de tekst naar de server te sturen.

Het volgende script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
    function jointime($mtime) {
      // split up the output string from microtime() that has been passed
      // to the function
      $timeparts = explode(" ",$mtime);
      // concatenate the two bits together, dropping the leading 0 from the
      // fractional part
      $finaltime = $timeparts[1].substr($timeparts[0],1);
      // return the concatenated string
      return $finaltime;
    }
    
$begintijd = jointime(microtime());

ob_start();

?><!--
hier de lange tekst
 -->
<?php

echo (jointime(microtime()) - $begintijd)." ";

ob_end_flush();

echo (jointime(microtime()) - $begintijd);
?>

Geeft steeds een iets ander resultaat, maar deze keer 0.00031101703643799 2.2508239746094.

Dat wil dus zeggen: van het begin van het uitvoeren door PHP tot ob_end_flush() gaat razendsnel, de ob_end_flush() kost meer dan 2 seconden.

gvtulder.f2o.org


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 10 februari 2002 17:52 schreef gvtulder het volgende:
Dat wil dus zeggen: van het begin van het uitvoeren door PHP tot ob_end_flush() gaat razendsnel, de ob_end_flush() kost meer dan 2 seconden.
Wat ik al dacht, het "van de server naar de client sturen" kost dus 2 seconden...

Als jij of je school geen snelle internet verbinding hebt/heeft is dat ook niet zo'n gekke waarde :)

  • gvtulder
  • Registratie: December 2001
  • Laatst online: 27-12-2024
Dat klopt niet helemaal. Volgens mij heeft de verwerking van het script door PHP niets te maken met de tijd die Apache er voor nodig heeft om het resultaat van dat script naar mij te sturen. Of heb ik dat fout? De tijd die je hier ziet is de tijd die PHP nodig heeft om het resultaat naar Apache te versturen, niet de tijd die het resultaat nodig heeft om bij mij te komen.

Bovendien zou wget op die server zelf dan een veel kortere tijd moeten laten zien, maar dat is niet zo. 0.000357985496521 1.4769719839096, dus nog altijd anderhalve seconde verwerkingstijd. Dat is een tijd die ik ook wel eens krijg, maar naar mijn idee nog steeds erg lang. Of denk ik dat het allemaal veel te snel kan?

gvtulder.f2o.org


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 10 februari 2002 18:01 schreef gvtulder het volgende:
Of denk ik dat het allemaal veel te snel kan?
Als het op een 486 sneller gaat dan moet dat idd sneller kunnen...

Hoe het allemaal precies zit weet ik niet, waardoor ik ook verder geen oordeel kan geven hierover.

Verwijderd

Op zondag 10 februari 2002 13:41 schreef gvtulder het volgende:
Of met phpSysInfo, ook leuk.

Hier komt ie dan: 1.04 1.05 1.23
een load van meer dan 1 is niet normaal voor een server. Er is niks aan de hand, maar hij heeft dan gewoon veel te doen, veel requests of een heel zwaar scipt oid. Als de server alleen page requests en pop3 binnenhalen te doen heeft, dan zal de load niet heel veel hoger dan 0.3 zijn...

Verwijderd

als je telnet of ssh toegang hebt, typ dan eens in:
top [enter]
en post de uitkomst...
Pagina: 1