Gebruik van WP All Import, de WordPress-importfunctie, en vergelijkbare plugins om XML-bestanden, CSV-bestanden, WXR-bestanden en afbeeldingen te importeren is een gebruikelijke taak voor ontwikkelaars en sites met content die regelmatig verandert. Echter, het is net zo gebruikelijk, helaas, dat er time-outs en prestatieproblemen optreden terwijl er zo´n importproces loopt.

In dit artikel gaan we de acties bespreken die je kunt ondernemen om je een weg te banen wanneer het importproces niet goed loopt.

Houd er rekening mee dat wij geen absolute garanties kunnen geven dat een importproces goed loopt op ons platform. Als het niet lukt bij Kinsta, adviseren wij de import uit te voeren in een lokale ontwikkelomgeving en de geactualiseerde database of tabel vervolgens te importeren in je website database.

Waarom veroorzaken importprocessen time-outs en prestatieproblemen?

Er zijn twee soorten time-outs waarmee importprocessen doorgaans te maken krijgen:

  • PHP-time-outs treden op indien een enkel PHP-proces langer loopt dan de max_execution_time of max_input_time die daarvoor staat in de PHP-configuratie. Als dat gebeurt, krijg je meestal een 502 server error in beeld
  • HTTP-time-outs treden op wanneer de verbinding tussen je browser en de webserver te lang in stand gehouden wordt. Als dat gebeurt, krijg je gewoonlijk een 504 gateway timeout error in beeld.

Het is trouwens niet ongewoon dat de websiteprestatie minder wordt wanneer er een flink importproces gaande is. Dat komt omdat PHP en MySQL volop bezig zijn met dat proces. Dit heeft tot gevolg dat de gewone toeloop naar de site even moet wachten totdat PHP en MySQL de handen weer vrij hebben om de gevraagde pagina te tonen.

Omgaan met PHP-time-outs

Voor sites die worden gehost door Kinsta staat de PHP max_execution_time en max_input_time ingesteld op 185 seconden. We kunnen dit niet verder verhogen.

Als je tegen PHP time-outs aanloopt, raden we je aan om samen te werken met een developer om het probleem op te lossen. In plaats een importproces uit te voeren via een langdradig PHP verzoek, is het bijvoorbeeld slimmer om de import rechtstreeks op de container uit te voeren met behulp van WP-CLI of een lokaal PHP of Bash script.

Omgaan met HTTP-time-outs

Bij sites die gehost worden door Kinsta, treden HTTP-time-outs in de regel op na 60 seconden. Het ontwerp van onze infrastructuur maakt het onmogelijk de duur van een HTTP-time-out te verlengen.

Indien je tegen een HTTP-time-out aanloopt, zijn er twee dingen die je zou kunnen proberen om het probleem op te lossen:

  • Als het proces een time-out ondervindt terwijl het importbestand geüpload wordt, schakel je over naar een snellere internetverbinding en voer je het proces opnieuw uit
  • Als je een hulpmiddel gebruikt met ondersteuning voor WP-CLI, zoals de WordPress-importfunctieplugin, kun je het importproces direct op de server uitvoeren en zodoende de HTTP-verbinding volledig omzeilen

Houd er wel rekening mee dat wanneer je een importproces – dat een wijziging in de content van je website betreft – via SSH laat lopen, dat iets is dat buiten het bestek valt van de dienstverlening van ons ondersteuningsteam. Daarom, als je niet gewend bent te werken met SSH, is het zaak om eerst goed te leren omgaan met dit krachtige hulpmiddel. Neem anders een ontwikkelaar in de arm om samen het importproces via SSH te laten lopen.

Omgaan met prestatieproblemen van je site

Als het importproces soepel loopt, maar je site tegelijkertijd matige prestaties laat zien, heb je twee mogelijkheden:

  • Plan het importproces in op een tijdstip dat je site doorgaans weinig verkeer heeft, om de negatieve impact ervan zo klein mogelijk te houden.
  • Schaal op naar een abonnement met meer PHP-workers op je live site. Als de prestatieproblemen inderdaad te maken hebben met PHP die handen te kort komt om ook nog eens binnenkomende aanvragen te bedienen, betekent een tijdelijke opschaling naar een abonnement met meer PHP-workers dat PHP meer capaciteit heeft om zowel het importproces als de toeloop naar je site af te wikkelen.
  • Opschaling heeft niet zoveel zin als je een importproces loslaat op een testomgeving. Onze testomgevingen hebben vast aantal PHP-workers en dat aantal verandert niet bij een opschaling van het abonnement.

Opschaling van het abonnement om meer PHP-workers tot je beschikking te krijgen, werkt echter niet altijd. Als je site traag is, omdat de database (MySQL) bezig is content in de database te zetten, dan gaat het toevoegen van PHP-workers niet bijdragen aan het verbeteren van de prestatie van je site.

Hulp halen

Als je alle suggesties in dit artikel uitgeprobeerd hebt en nog steeds problemen ondervindt en graag een beetje assistentie zou willen hebben, dan kun je een beroep doen op ons ondersteuningsteam. Zorg er wel voor dat je voldoende informatie bij de hand hebt vóór je dat doet.

    • Start het importproces en time hoelang het duurt tot het stilvalt. Gebeurt dat na 1 minuut dan heb je vermoedelijk te maken met een HTTP-time-out. Gebeurt het na 5 minuten dan gaat het waarschijnlijk om een PHP-time-out. Als de zaak elders stokt dan is het waarschijnlijk een andere limiet of fout, die overigens niet per se hoeft te resulteren in een time-out.
    • Zoek in het foutenlogboek het moment op dat het importeren stokte en kijk of er een foutmelding bij staat
    • Maak een screenshot van de betreffende foutmelding of -pagina
    • Maak een beknopte beschrijving van het type bestand dat je probeert te importeren, hoe die is gemaakt, wat het bevat, de hulpmiddelen die gebruikt zijn bij het maken van het bestand en bij het laten lopen van het importproces, en de fout waar je tegenaan loopt

Zodra je die informatie bij de hand hebt maak je een ticket aan bij het ondersteuningsteam van Kinsta. Houd er wel rekening mee dat we niet kunnen garanderen dat ieder importproces ook vlekkeloos gaat lopen.

Vervolgacties – lokale ontwikkelings-workflow

Als het niet mogelijk blijkt het importproces te laten lopen in een Kinsta-omgeving, dan is de volgende stap: het ontwikkelen van een nieuwe workflow om het importproces in een lokale ontwikkelingsomgeving te laten lopen. Zorg er wel voor dat een ontwikkelaar bij dit proces betrokken is, om ervan verzekerd te zijn dat er geen gegevens verloren gaan en dat de database van je site niet beschadigd raakt.

In het algemeen is de gang van zaken zo, dat je een kopie van je site neerzet in een lokale ontwikkelingsomgeving – je kunt DevKinsta gebruiken – waarin je alle time-outlimieten kunt controleren. Vervolgens rond je het importproces in die lokale omgeving af. Als dat eenmaal gebeurd is, exporteer je een kopie van de WordPress-database of van de geactualiseerde tabellen vanuit je lokale omgeving. Dan maak je een back-up van je live website, verwijder je de database (of aangetaste tabellen) uit je live website en importeer je de database of tabellen die zojuist je geëxporteerd hebt uit je lokale omgeving.