Nu hoor ik her en der dat de Magento shops wat traag zijn en dat in sommige gevallen het laden van een pagina al 4 of meer seconde duurt
Wat kan er allemaal gedaan worden om dit sneller te maken? Hoe doen jullie dat? Goed je kunt een dual quad-core Xeon met 16GB geheugen gaan draaien maar er zullen toch ook wel andere methodes zijn?
Ik heb de fora uitgekamt op dit onderwerp en ga het volgende doen:
Run nu osCommerce op Athlon 3000 1.8 Ghz dedicated server met 512KB L2, en 1GB DDR op een standaard EIDE schijf.
Uit voorzorg wordt dit: Opteron 1212 dual core 2 x 2.0 Ghz met 2 x 1MB L2 cache, 2GB RAM en 2 IDE schijven in hardware Raid 1.
Omdat Magento nogal database-heavy is is het kennelijk zaak snelle I/O te hebben. CPU verschillen vallen mee tegenwoordig dus snellere schijven hebben meer impact. SCSI was niet binnen mijn budget dus hoop dat RAID opstelling het doet.
Behalve de hardware ben ik van plan MemCache te draaien zodat de meest voorkomende SQL queries uit cache geserveerd worden. Mocht de boel uit de hand lopen kwa visitors dan MySQL5 relatief gemakkelijk in een cluster gedraaid worden met een aantal extra slave servers op VPS servers voor snellere read queries. Dat zou een mooi probleem zijn maar hopelijk kan deze ene server het aan, zoveel bezoekers trekken we nou ook weer niet.
MySQL zal na een aantal weken wat data hebben over langzame queries en mochten die voortkomen uit niet-interessante blocks dan haal ik die weg of edit ze. Ben niet van plan PHP zelf te gaan editen want dat maakt upgraden weer lastig. Het zal dus voornamelijk hardware, OS en application layer tweaks worden. LAMP zelf, maar niet de code.
Misschien wat JS/CSS compressie of het combineren van om HTTP requests te verlagen maar hopelijk is dat allemaal niet nodig.
Op m’n ouwe dev box (pentium 1) loopt het nog prima al is dat natuurlijk maar 1 visitor. Hoop het binnenkort eens te stress-testen.
Tijdens de officiele Magento training die ik aan het doen ben via PHP Architect hoorde ik over APC. Heb het geinstalleerd en het loopt meteen al een stuk sneller. Dat + MemCache zal het toch echt moeten doen.
Daarvoor moet je wel een dedicated server draaien. Het is geen optie voor een shared environment, helaas.
Ben zelf van shared naar semi-dedicated (10 gebruikers) overgestapt voor Magento en dat scheelt al enorm (volledige homepage is nu geladen in 9 seconden ipv 14sec.), maar het kan nog sneller natuurlijk alleen is dedicated voor mij qua prijs nog geen optie.
De server waar ik op zit draait eAccelerator dat schijnt eenzelfde cache functie te hebben als APC. Ik heb geen idee hoe ik dit kan aanzetten, maar zal er induiken en hier het resultaat posten.
MySQL zal na een aantal weken wat data hebben over langzame queries en mochten die voortkomen uit niet-interessante blocks dan haal ik die weg of edit ze
Waar kan ik dat zien en hoe?
Er is een M-extension die alles wat versnelt:
http://www.magentocommerce.com/extension/457/fooman-speedster
Of het echt werkt heb ik niet geprobeerd