Page generated groter = meer serverload?
Hallo,
Ik heb een website met php en mysql. Ik heb momenteel één script, maar ik ben ze andersom aan het zetten. Ik heb op de pagina momenteel een 'page generated in... ' gezet. Als dit getal hoger is, betekend dat dan dat de server meer serverkracht gebruikt, want tussen mijn scripts is er duidelijk een tijdverschil te zien.
Ik heb een website met php en mysql. Ik heb momenteel één script, maar ik ben ze andersom aan het zetten. Ik heb op de pagina momenteel een 'page generated in... ' gezet. Als dit getal hoger is, betekend dat dan dat de server meer serverkracht gebruikt, want tussen mijn scripts is er duidelijk een tijdverschil te zien.
Inderdaad, wanneer het meer tijd kost, kost het dus meer performance.
Wanneer je wilt gaan optimaliseren, zul je echter wel moeten weten wat nu precies het probleem is. Wanneer 80% van de tijd in het php-verhaal gaat zitten, heeft het weinig zin om de 20% tijdsbesteding in de database aan te gaan pakken. Je zult dus op heel veel plaatsen moeten gaan meten om een goed beeld te krijgen van je systeem.
In Zend Studio kun je automatisch profilen, wel zo handig.
Wanneer je wilt gaan optimaliseren, zul je echter wel moeten weten wat nu precies het probleem is. Wanneer 80% van de tijd in het php-verhaal gaat zitten, heeft het weinig zin om de 20% tijdsbesteding in de database aan te gaan pakken. Je zult dus op heel veel plaatsen moeten gaan meten om een goed beeld te krijgen van je systeem.
In Zend Studio kun je automatisch profilen, wel zo handig.
Even tien metingen gedaan van het oude en nieuwe script. De generation time van het nieuwe script is 3x zo snel. Heeft het effect om het nieuwe te gebruiken, de getallen zijn sowieso niet erg groot.
Bij poging 1 worden gegevens eerst opgehaald en vertaald en (nieuw) opgesslagen. Bij het oude script wordt per bezoeker vertaald (per view). Vanaf poging twee heb ik op de F5 zitten rammen.
Poging Nieuw OUD
1 0.5906 0.5884
2 0.0042 0.1449
3 0.0136 0.1596
4 0.0039 0.1443
5 0.0082 0.1452
6 0.0039 0.1464
7 0.0040 0.1540
8 0.0040 0.1466
9 0.0040 0.1487
10 0.0040 0.1462
Totaal 0,6404 1,9243
Gemiddelde 0,06404 0,19243
Verhouding 1 : 3
Bij poging 1 worden gegevens eerst opgehaald en vertaald en (nieuw) opgesslagen. Bij het oude script wordt per bezoeker vertaald (per view). Vanaf poging twee heb ik op de F5 zitten rammen.
Poging Nieuw OUD
1 0.5906 0.5884
2 0.0042 0.1449
3 0.0136 0.1596
4 0.0039 0.1443
5 0.0082 0.1452
6 0.0039 0.1464
7 0.0040 0.1540
8 0.0040 0.1466
9 0.0040 0.1487
10 0.0040 0.1462
Totaal 0,6404 1,9243
Gemiddelde 0,06404 0,19243
Verhouding 1 : 3
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
Leuk en aardig, maar weet je heel zeker dat je niet de resultaten uit de cache zit te bekijken? En dan heb ik het over de database-cache.
Op zich is je nieuwe script dus sneller, wat betekend dat het zou lonen om het nieuwe script te gebruiken. Maar bij poging 1 zie je dat je nieuwe script langzamer is. Probeer ook dat te achterhalen en aan te passen, maar ik zou wel je nieuwe script gebruiken.
@pqFrank, deze gegevens zijn gecached in de Mysql database voor een half uur.
Bij poging 1 is de pagina langzamer omdat het script een xml feed ophaalt vanaf een andere server. In het nieuwe script wordt deze gegevens eerst vertaald en dan in de database gestopt voor een half uur. In het oude script wordt het script opgehaald opgeslagen en daarna vertaald per view (elke pageview dus opnieuw).
Nieuwe eerste poging: 0.5907
Oude eerste poging: 0.7011
Dus bij de eerste poging is het de heletijd verschillend :S (wel zelfde opgevraagd)
Bij poging 1 is de pagina langzamer omdat het script een xml feed ophaalt vanaf een andere server. In het nieuwe script wordt deze gegevens eerst vertaald en dan in de database gestopt voor een half uur. In het oude script wordt het script opgehaald opgeslagen en daarna vertaald per view (elke pageview dus opnieuw).
Nieuwe eerste poging: 0.5907
Oude eerste poging: 0.7011
Dus bij de eerste poging is het de heletijd verschillend :S (wel zelfde opgevraagd)
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
De nieuwe situatie zal vast wel iets beter zijn, maar ik vrees toch dat het voornamelijk de cache is waar je nu de resultaten uit haalt. Zie het enorme verschil tussen poging 1 en 2. En dan zie je ook dat er nauwelijks verschil zit tussen de oude en de nieuwe methode.
Het feit dat bij poging 2 de nieuwe methode flink sneller is, is leuk en aardig, maar levert relatief weinig op. Uiteraard blijf je deze wel gebruiken. Verwacht er alleen geen wonderen van, poging 1 geeft aan waar het probleem zit: De query/queries.
Edit: Over welke cache heb jij het? Een record die je in de database hebt opgeslagen? Dat is niet de cache die ik bedoel, ik doel op de cache van de DBMS, van de server zelf. Heb jij die geconfigureerd?
Gewijzigd op 01/01/1970 01:00:00 door Frank -
@AstroVersum
Je haalt dus die feed op 1 keer in het halfuur, en slaat hem wel op in je database.
Dan is het verhaal duidelijk toch? Dat minimale verschil ten opzichte van wat je 1 keer in het halfuur doet, maar relatief grote verschil tussen wat bezoekers binnen dat halfuur aan load betekenen zegt genoeg.
Die 1e keer in het half uur een iets grotere serverload en voor X aantal bezoekers/ refreshes in het halfuur een veel mindere serverload, houd in dat je het beste kan overstappen naar je nieuwe manier.
Je haalt dus die feed op 1 keer in het halfuur, en slaat hem wel op in je database.
Dan is het verhaal duidelijk toch? Dat minimale verschil ten opzichte van wat je 1 keer in het halfuur doet, maar relatief grote verschil tussen wat bezoekers binnen dat halfuur aan load betekenen zegt genoeg.
Die 1e keer in het half uur een iets grotere serverload en voor X aantal bezoekers/ refreshes in het halfuur een veel mindere serverload, houd in dat je het beste kan overstappen naar je nieuwe manier.
mysql_unbuffered_query() slaat de result van query niet op in het geheugen. Dat zal schelen, mits het een unieke query op een pagina is. Dus als je twee keer dezelfde query uitvoert kan je beter mysql_query()
Misschien sla ik hier de spijker wel helemaal scheef (met mijn uitleg en in de context van dit topic)
Maar doe er je voordeel mee!
Misschien sla ik hier de spijker wel helemaal scheef (met mijn uitleg en in de context van dit topic)
Maar doe er je voordeel mee!
Kijk hier ook eens naar: handleiding
'pgFrank:
Edit: Over welke cache heb jij het? Een record die je in de database hebt opgeslagen? Dat is niet de cache die ik bedoel, ik doel op de cache van de DBMS, van de server zelf. Heb jij die geconfigureerd?
Over een record. Ik kan zelf de server niet configureren, dus ik weet het niet.




