Regelmatig ontvangen wij een vraag omtrent de snelheid van een Magento webshop. Mocht je zelf met Magento werken en deze aardig te hebben uitgebreid met allerlei producten en modules, dan kan het zijn dat de webshop minder snel presteert dan in het begin.

Met de module Lesti_FPC kan je de “frontend” van je webshop sneller maken. Dit is een Full Page Caching (FPC) module die ervoor zorgt dat veel bewerkingen niet iedere keer opnieuw gedaan hoeven worden. Een uitleg hiervan staat omschreven op http://gordonlesti.com/how-does-lesti-fpc-work/.

Installeren van Lesti_FPC

Alvorens het installeren van de Lesti_FPC module is het raadzaam om hierover eerst even contact op te nemen met de website ontwikkelaar. Wellicht dat de website ontwikkelaar je namelijk hierbij kan ondersteunen.

De module Lesti_FPC kan je downloaden via de volgende URL https://github.com/GordonLesti/Lesti_Fpc/archive/master.zip Dit is een ZIP-bestand die je lokaal op je eigen computer kunt uitpakken met daarin de map “app”. Deze map kan je uploaden naar de hoofdmap van je Magento webshop die op een van onze servers staat.

Nadat de module is geplaatst op de server kan je inloggen op de “backend” van Magento. Ga in de “backend” naar het “Cachebeheer” en je zult zien dat er een extra optie is bijgekomen, namelijk “Full page cache”. Wanneer je de “Full page cache” inschakelt moet je vervolgens eenmalig de “Magento cache” legen om de aanpassing te activeren.

Lesti_FPC met Redis cache (aanbevolen)

Standaard zal Lesti_FPC de cachebestanden op de server wegschrijven. Om nog meer snelheid te kunnen krijgen is het mogelijk om de “Full page cache” in het RAM-geheugen van de server op te slaan. Dit wordt gedaan middels Redis, een aanvullende dienst die wij kunnen leveren op onze HPW-platform.

Wanneer Redis op de server beschikbaar is dien je het bestand “./app/etc/fpc.xml.sample” te hernomen naar “./app/etc/fpc.xml”. Vervolgens kun je in dit bestand de Redis gegevens invullen. Mocht je hier niet helemaal uitkomen, dan kunnen wij uiteraard hierbij assisteren. Als de gegevens correct zijn ingevuld moet de “Magento cache” eenmalig worden geleegd om de wijziging te activeren.

Regelmatig merken onze klanten op dat hun Magento1 webshop na verloop van tijd trager wordt. Het is een algemeen bekend fenomeen voor wat betreft Magento1 webshops. Soms ligt het simpelweg aan de groei in producten of storeviews of aan stijgende bezoekersaantallen en is het probleem op te lossen door het verhogen van de beschikbare bronnen (CPU/geheugen) voor een server of het toepassen van caching-methoden (Redis / Elasticsearch / Lesti_FPC).

Soms treffen wij ook installaties aan waarbij de logging van Magento1 zodanig is opgelopen dat sommige log-tabellen exorbitant veel records bevatten. Hierdoor loopt de belasting op de MySQL/MariaDB server op wat uiteindelijk ook kan resulteren in een tragere webshop.

Met name wanneer u een drukke webshop heeft of wanneer u een shop heeft die al geruime tijd in de lucht is, is het interessant om eens te kijken hoeveel ruimte de logging nu precies in beslag neemt.

Magento1 heeft hiervoor standaard een commandline (CLI) tool aan boord. Het betreft een op de CLI uitvoerbaar script, “log.php“. Deze kunt u vinden in de volgende map:

/var/hpwsites/<u_gebruiker>/website/html/webroot/shell

De basis

Wanneer u naar deze map navigeert en het commando “php log.php” uitvoert dan krijgt u het volgende te zien:

[EL7/SRV] [root@d-hpwtest shell]$] php log.php
Usage:  php -f log.php -- [options]
        php -f log.php -- clean --days 1

  clean             Clean Logs
  --days      Save log, days. (Minimum 1 day, if defined - ignoring system value)
  status            Display statistics per log tables
  help              This help

De getallen

Wanneer u met het commando “php log.php status” de status opvraagt dan zal de tool u informeren over de hoeveelheid records en de ruimte die deze records in beslag nemen:

[EL7/SRV] [root@d-hpwtest shell]$] php log.php status
+-----------------------------------+------------+------------+------------+
|Table Name                         | Rows       | Data Size  | Index Size |
+-----------------------------------+------------+------------+------------+
|log_customer                       | 0          | 16.38Kb    | 16.38Kb    |
|log_visitor                        | 117.5k     | 36.38Mb    | 0 b        |
|log_visitor_info                   | 71.2k      | 46.38Mb    | 0 b        |
|log_url                            | 0          | 16.38Kb    | 32.77Kb    |
|log_url_info                       | 0          | 16.38Kb    | 0 b        |
|log_quote                          | 120k       | 26.38Mb    | 0 b        |
|report_viewed_product_index        | 0          | 16.38Kb    | 81.92Kb    |
|report_compared_product_index      | 0          | 16.38Kb    | 81.92Kb    |
|report_event                       | 0          | 16.38Kb    | 81.92Kb    |
|catalog_compare_item               | 0          | 16.38Kb    | 81.92Kb    |
+-----------------------------------+------------+------------+------------+
|Total                              | 309k       | 109.14Mb   | 376.83Kb   |
+-----------------------------------+------------+------------+------------+

Er zijn vaak een aantal “grootverbruikers”. Onderstaand zullen we er 4 kort uitlichten:

  • log_visitor – informatie over de sessies van de bezoekers
  • log_visitor_info – informatie over de instellingen van de bezoekers
  • log_url – bezochte pagina’s voor elke bezoeker
  • log_url_info – informatie over deze bezochte pagina’s

Het opschonen

U kunt met het commando “php log.php –clean –days 30” de history tot 30 dagen bewaren. Alles ouder dan 30 dagen zal opgeschoond worden. Uiteraard kunt u de periode naar wens aanpassen. Voert het commando uit zonder het aantal dagen op te geven dan zal er 1 dag bewaard worden. Vanzelfsprekend neemt een langere periode meer ruimte in beslag.

[EL7/SRV] [root@d-hpwtest shell]$] php log.php --clean --days 30
Log cleaned

Voorkomen

In de instelling van Magento kunt u automatisch opschonen voor logging inschakelen. Wanneer u op de Magento Admin bent ingelogd dan gaat u in het bovenste menu naar “System” -> “Configuration“. Vervolgens zoekt u in het menu links “Advanced” -> “System” op. Hier ziet u een kopje “Log“:

Magento1 log settings

Hier kunt u automatisch opschonen inschakelen (“Enable Log Cleaning: Yes“) en het aantal dagen (“Save Log, Days“) bepalen. Eventuele foutmeldingen bij het opschonen kunt u naar uw e-mailadres laten sturen (“Error Email Recipient“).

Magerun is hét Zwitserse zakmes voor elke Magento ontwikkelaar. De tool bevat vele functionaliteiten om uw Magento website via de CLI te beheren zo kunt u snel informatie over de shop opvragen, cache beheren, back-ups maken en nog vele andere handigheden.

Hoe te gebruiken

Magerun is standaard op onze HPW servers geïnstalleerd en deze kunt u dan ook direct gebruiken als u bent ingelogd op de server. Magerun dient uitgevoerd te worden vanuit de webroot van een website.

Magerun komt in 2 varianten. In het geval u Magento 1.x gebruikt, dan dient u n98-magerun te gebruiken. Wanneer gebruikt wordt gemaakt van Magento 2.x, dan dient u n98-magerun2 te gebruiken als commando. In de onderstaande voorbeelden gaan wij uit van Magento 1.0

Voorbeelden Magerun

 

Algemene informatie over uw webshop

n98-magerun sys:info

Geeft het volgende resultaat:

                            
+---------------------+-------------------------------+
| name                | value                         |
+---------------------+-------------------------------+
| Version             | 1.9.x.x                       |
| Edition             | Community                     |
| Cache Backend       | Zend_Cache_Backend_File       |
| Cache Directory     | /var/hpwsites/u_..../var/cache|
| Session             | files                         |
| Crypt Key           | 936ccf420ad5dee1a756787e09ff9b|
| Install Date        | Tue, 19 Oct 2016 13:37:20 +000|
| Vendors (core)      | Mage, Zend                    |
| Vendors (community) | Cm, Phoenix                   |
| Attribute Count     | 131                           |
| Customer Count      | 25                            |
| Category Count      | 2                             |
| Product Count       | 35                            |
+---------------------+-------------------------------+

Toon alle gebruikers

n98-magerun admin:user:list

Geeft het volgende resultaat:

 
+----+----------+------------------+--------+
| id | username | email            | status |
+----+----------+------------------+--------+
| 1  | Linqhost | info@linqhost.nl | active |
+----+----------+------------------+--------+

Wachtwoord admin-account resetten

n98-magerun admin:user:change-password

Toon status van de cache

n98-magerun cache:list

Geeft het volgende resultaat:

 
+-------------+---------+
| code        | status  |
+-------------+---------+
| config      | enabled |
| layout      | enabled |
| block_html  | enabled |
| translate   | enabled |
| collections | enabled |
| eav         | enabled |
| config_api  | enabled |
| config_api2 | enabled |
+-------------+---------+

Leeg de cache van uw webshop

n98-magerun cache:clear

Plaats webshop in onderhoudsmodus

n98-magerun sys:maintenance

 

Meer voorbeelden

Magerun is een zeer uitgebreide tool, voor meer voorbeelden kunt u kijken op de Magerun Magerun command wiki pagina.

Symptomen:

  • Magento exception met de melding “Front controller reached 100 router match iterations”
  • Wit scherm met in de ./var/report map bestanden met de “Front controller reached 100 router match iterations” melding

Oorzaak:

Door een bug, die niet altijd optreedt, in Magento wordt de huidige configuratie cache vervangen door de standaard Magento configuratie.

Oplossing:

Alleen wanneer u een van de bovenstaande symptomen heeft geconstateerd is er een optionele patch voor Magento beschikbaar die het probleem zal verhelpen. Om de patch te uit te voeren:

  1. Login op de server en ga naar de webroot
  2. Download: wget https://raw.githubusercontent.com/convenient/magento-ce-ee-config-corruption-bug/master/PATCH_SUPEE-4755_EE_1.13.1.0_v1.sh
  3. Voer patch uit: sh PATCH_SUPEE-4755_EE_1.13.1.0_v1.sh
  4. Clear cache: n98-magerun cache:flush
  5. Clear Magento compiler: php shell/compiler.php clear