Snelheid PHP+MySQL

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
driesve
Elite Poster
Elite Poster
Berichten: 1616
Lid geworden op: 05 mei 2008, 12:32
Uitgedeelde bedankjes: 74 keer
Bedankt: 87 keer

Hallo iedereen,

Ik heb een uitgebreide dynamische website, met PHP en MySQL, gemaakt voor een vereniging. Op hun server draait de website héél traag. Een pagina duurt soms tot 20 seconden om te laden (via Firebug).

Het is een combinatie van
  • Trage server die buiten hun beheer ligt (VZW, dus geen middelen). De beheerder is ook niet zo "goed bereikbaar".
  • Een redelijke 'zware' site, volledig dynamisch.
Aan het eerste punt kan moeilijk iets veranderd worden, tenzij blijkt dat het onwerkbaar blijkt te zijn. Het tweede punt wil ik aanpassen door te optimaliseren en te cachen. Door op regelmatige plaatsen een tijdsmeting te doen, hoop ik het probleem te lokaliseren.

Om het effect van beide delen te onderzoeken, had ik graag ook een idee van de relatieve traagheid van de server. Indien dat de boosdoener is, probeer ik de systeembeheerder te contacteren. Daarom mijn vragen:
  • Bestaan er PHP/MySQL tools om de snelheid te testen?
  • Bestaan er server waar je voor een weekend gratis je website kan testen aan een goede snelheid met PHP+MySQL om een referentie te krijgen?
    (Of is er een bereidwillige Userbaser met zo'n server?)
Alvast bedankt!

PS: Als ik over snelheid van de server spreek, bedoel ik de PHP/MySQL snelheid. Niet de uplink.
Gebruikersavatar
Splitter
Elite Poster
Elite Poster
Berichten: 5926
Lid geworden op: 10 maa 2010, 12:30
Uitgedeelde bedankjes: 68 keer
Bedankt: 607 keer
Recent bedankt: 2 keer
Te Koop forum

eerste vraag: wat precies duurt er lang?
je script uitvoeren, je queries inladen, of je queries verwerken?
misschien ergens een niet zo optimale loop die alles vertraagt?

heb nog op geen enkele server ooit last gehad van trage php/mysql...
en als je je database via PDO aanspreekt, kan je misschien even testen met een sqlite3 db ipv mysql,
dan kan je dat ook al uitsluiten.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Tenzij je een framework gebruikt à la Zend ga je niet eenvoudig metingen kunnen doen.

Met wat chance heb je wel je SQL-commando's abstract gemaakt zodat je bvb elke MySQL-query kan loggen plus meten hoe lang ze duren.
Voer queries ook eens met de hand uit, rechtstreeks op MySQL (via Navicat bvb), vaak liggen slechte indexen of complexe joins aan de basis van vertragingen.

En ik wil je wel wat webruimte geven op een potent servertje (Core i7, 16 GB ram) dat vrijwel niets doet. 't Is wel een Windows-server, dus .htaccess moet vertaald worden naar web.config, voor mocht je daar speciale dingen nodig hebben. Ik heb er elke nog relevante PHP-versie op draaien, voor mocht je dat nodig hebben :)

[Afbeelding Post made via mobile device ]
driesve
Elite Poster
Elite Poster
Berichten: 1616
Lid geworden op: 05 mei 2008, 12:32
Uitgedeelde bedankjes: 74 keer
Bedankt: 87 keer

Ik heb ondertussen wat metingen gedaan van de homepage met microtime en dat heeft toch al een beetje verduidelijkt.

Code: Selecteer alles

Loading header: 5.9280395507812 ms
Login: 40.585994720459 ms
Loading settings: 6.9930553436279 ms
Loading classes: 71.595907211304 ms
Loading right: 18.139123916626 ms
Loading messages: 11075.28090477 ms
Printing messages: 1.8579959869385 ms
Dus het lezen van de berichten uit de database zorgt dus voor véél vertraging, namelijk 11 seconden. Ik ga de query eens analyseren.
meon schreef:Met wat chance heb je wel je SQL-commando's abstract gemaakt zodat je bvb elke MySQL-query kan loggen plus meten hoe lang ze duren.
De SQL-commando's zijn inderdaad abstract gemaakt. Dat geeft wel een lichte vertraging tov rechtstreekse implementatie, maar dat is (zeker) niet de oorzaak.
meon schreef:En ik wil je wel wat webruimte geven op een potent servertje (Core i7, 16 GB ram) dat vrijwel niets doet. 't Is wel een Windows-server, dus .htaccess moet vertaald worden naar web.config, voor mocht je daar speciale dingen nodig hebben. Ik heb er elke nog relevante PHP-versie op draaien, voor mocht je dat nodig hebben :)
Bedankt voor het aanbod, maar de website maakt nogal veel gebruik van .htaccess en ik heb nog nooit op een Windows-server gewerkt. Als ik er niet uitgeraakt, dan laat ik wel iets weten om alsnog te testen.

-------------------------------------------------------
Ik heb de query kunnen aanpassen zodat deze terug vlot draait. Maar bij dieper onderzoek, lag de fout bij het indexeren van een tabel (zoals meon vermeldde). Eén van de belangrijke tabellen had geen index gekregen waar het nodig was. Het draait nu vlotter, al ben ik nog niet helemaal tevreden; maar dat kan ook buiten mijn macht liggen.
Plaats reactie

Terug naar “Development”