Mät prestanda med PHP
Stimulerad av en annan tråd om en långsam webbserver skapar jag denna om prestandamätning med PHP.
Innan jag går in på PHP vill jag påminna om en del av vad som sker mellan att man trycker på en länk eller skriver in en URL och att resultatet till fullo har presenteras i ett browserfönster.
1. En http-förfrågan ska skickas från din enhet till aktuell server.
2. Denna request har ett namn som måste upplösas till en ip-adress av DNS-systemet (i den lokala enheten och på internet).
3. Förfrågan skickas nu genom ett antal routrar och kommer (förhoppningsvis) fram till servern.
4. Servern ska tolka denna request och därigenom avgöra vad som ska skickas tillbaka.
5. Servern bygger en sida som skickas och som oftast avslutas med </html>.
6. Svaret ska passera genom routrar på vägen tillbaka.
7. När svaret kommer tillbaka ska det tolkas (t.ex. HTML och CSS) och exekveras (JavaScript).
8. Resultatet blir en sida som presenteras i ett browserfönster på skärmen.
Om detta tar lång tid så kan det ha många orsaker.
Den egna utrustningen och internetförbindelsen kan vara långsamma.
För att avgränsa lite bland övriga orsaker kan man (jag tar exempel från Linux/Mac, men det finns motsvarande program i Windows).
– Köra "dig" för att se hur bra DNS-systemet svarar. T.ex.
Om någon av testerna ovan ger ett dåligt resultat så måste det åtgärdas separat.
Om allt ovan ger hyggligt resultat, men svarstiden ändå är lång, då kan det vara dags att titta på om servern är långsam.
I nästa post ska jag beskriva hur jag enkelt gjort det med PHP.
–
Stimulerad av en annan tråd om en långsam webbserver skapar jag denna om prestandamätning med PHP.
Innan jag går in på PHP vill jag påminna om en del av vad som sker mellan att man trycker på en länk eller skriver in en URL och att resultatet till fullo har presenteras i ett browserfönster.
1. En http-förfrågan ska skickas från din enhet till aktuell server.
2. Denna request har ett namn som måste upplösas till en ip-adress av DNS-systemet (i den lokala enheten och på internet).
3. Förfrågan skickas nu genom ett antal routrar och kommer (förhoppningsvis) fram till servern.
4. Servern ska tolka denna request och därigenom avgöra vad som ska skickas tillbaka.
5. Servern bygger en sida som skickas och som oftast avslutas med </html>.
6. Svaret ska passera genom routrar på vägen tillbaka.
7. När svaret kommer tillbaka ska det tolkas (t.ex. HTML och CSS) och exekveras (JavaScript).
8. Resultatet blir en sida som presenteras i ett browserfönster på skärmen.
Om detta tar lång tid så kan det ha många orsaker.
Den egna utrustningen och internetförbindelsen kan vara långsamma.
För att avgränsa lite bland övriga orsaker kan man (jag tar exempel från Linux/Mac, men det finns motsvarande program i Windows).
– Köra "dig" för att se hur bra DNS-systemet svarar. T.ex.
Kod:
– Köra ping för att se hur lång tid det tar för ett litet paket att komma fram och för svaret att komma tillbaka. T.ex.dig www.sunet.se
Kod:
– Köra traceroute för att se om det finns några flaskhalsar på vägen. T.ex.ping www.sunet.se
Kod:
Traceroute kör UDP som default, vilket hanteras dåligt av ett växande antal routrar. Då kan det vara bättre att köra ICMP ECHO i stället:traceroute www.sunet.se
Kod:
traceroute -I www.sunet.se
Om någon av testerna ovan ger ett dåligt resultat så måste det åtgärdas separat.
Om allt ovan ger hyggligt resultat, men svarstiden ändå är lång, då kan det vara dags att titta på om servern är långsam.
I nästa post ska jag beskriva hur jag enkelt gjort det med PHP.
–