Mijn site is langzaam/CPU gebruik is te hoog/Aantal processen

Het kan zijn dat u van ons bericht heeft gekregen dat uw website teveel beslag legt op de CPU (de processoren in de servers) of teveel processen gebruikt. Dit kan eenvoudig komen door een groot aantal bezoekers maar in 99,9% van de gevallen is dat niet de oorzaak.

We zullen hieronder kort uiteenzetten wat oorzaken kunnen zijn voor een hoog CPU gebruik. Het niet (tijdig) oplossen van overmatig CPU gebruik kan het (geautomatiseerd) afsluiten van uw account/website betekenen. Zodra het cpu gebruik weer op orde is schakelt uw site automatisch weer in. Echter als dit in korte tijd blijft herhalen zal hij hem uiteindelijk niet meer automatisch inschakelen

Deze maatregelen zijn nodig om servers tegen overbelasting te beschermen. Door de overbelasting aan te pakken brengt u niet alleen het CPU gebruik naar beneden, maar uw site wordt ook aanzienlijk sneller en dus veel prettiger om te bezoeken. Het kan natuurlijk zijn dat uw site zoveel resources gebruikt dat shared hosting eigenlijk geen optie voor u is, u deelt de resources immers met anderen. In dergelijke gevallen is het beter naar een eigen server te kijken, of een dedicated server of een zgn. VPS server. Dergelijke producten leveren wij op dit moment helaas niet.

Cache van uw lokale browser
Het gebeurd regelmatig dat niet de server maar uw eigen browser traag geworden is door een cache die te vol zit. Maakt deze cache eens leeg en/of probeer eens een andere browser om te kijken of het daar ook traag is. Zie bijv. http://www.ehow.com/how_8618453_fix-slow-firefox-ie8-browsers.html 

Apache logfiles / Lijst met processen

Als u bericht over de CPU heeft gekregen van ons dan kan het zijn dat onderaan deze email een lijst met processen en ipnummer getoond wordt. Uit deze lijst is wellicht e.e.a. op te maken maar het kan ook zijn dat er geen lijst is of dat deze niet veel bevat. In dergelijke gevallen bieden de logfiles wellicht uitkomst. Daar vindt u immer info over alle bezoekers van uw site en welke files zij opgevraagd hebben op welk moment. Deze files doorspitten rond het tijdstip van de melding is een goede zaak en kan een goede indruk geven over mogelijke problemen. U kunt deze info terugvinden in de zgn. apache logfiles. Deze kunt u raadplegen via het controle paneel, Site Samenvatting / Statistieken / Logs en dan Volledige foutlog/verbruikslog voor de logfile van vandaag. De logfiles van voorgaande dagen vindt u onder Opgeslagen Apachelogs. Ook kunt u die logfiles via ftp of bestandsbeheer raadplegen in de map /domains/uwdomein.xx/logs. Let op dat er voor de subdomeinen aparte logfiles zijn in het subdomein menu.

Moet ik me zorgen maken ?

Niet direct hoor. Pas als u heel regelmatig deze waarschuwingen krijgt zal er waarschijnlijk iets structureels aan de hand zijn. Valse meldingen zijn er meestal niet echt maar omstandigheden varieren wel per moment. Zo kan een script of query die niet goed in elkaar zit normaal altijd goed gaan maar op een moment dat het drukker is op de betreffende server kan hij bijvoorbeeld weer wel een waarschuwing veroorzaaken.

Mogelijke oorzaken overmatig CPU gebruik

  • U heeft een fotoboek op de website staan en ipv de kleine versie van foto's heeft u de volledige versie op de website staan. Vervolgens toont u de foto en moet de CPU de originele foto van soms wel vele MB's gaan verkleinen voordat hij getoond kan worden. Als een paar bezoekers dat tegelijk doen kan dit veel CPU gebruik tot gevolg hebben.
    • Mogelijke oplossingen: Zet alleen verkleinde foto's op uw website en zorg ervoor, dit is het belangrijkste, dat het formaat waarin u de foto's toont ook overeenkomt met het echte formaat van de foto's zodat de server niets hoeft te verkleinen maar alleen maar hoeft te tonen. Zet desnoods meerdere versies op de site, meer schijfruimte gebruiken is minder erg als meer CPU.
  • In  het verlengde van de eerste reden; Het tonen van foto's via een php programma (streamen) is vele malen langzamer als het rechtstreeks opnemen van de URL van de foto.
    • Mogelijke oplossingen: Neem de rechtstreekse URL naar foto's, images ed op en laat dit niet via een php programma lopen. Het is trager en het belast de CPU onnodig.
  • U biedt bezoekers de mogelijkheid om commentaar op een artikel, foto of ieders te geven. Als u dit niet afschermt met een zgn. Captcha of beperkt voor alleen gebruikers die zich geregistreerd hebben dan kan het zijn dat spammers hiervan misbruik gaan maken met als gevolg dat het CPU (extreem) omhoog kan gaan.
  • U laat een webpagina iedere X seconden automatisch opnieuw opbouwen / refreshen waardoor de CPU onnodig belast wordt.
    • Mogelijke oplossingen: Verwijder de refresh uit de pagina. Meestal zit dit in de header of eventueel in javascript. 
  • U gebruikt een database voor uw website. Het is dan van belang dat deze database ook helemaal is geoptimaliseerd. Hier wordt dan met name mee bedoeld dat er voldoende en correcte indexen aanwezig zijn. Een database met enkele (tien)duizenden records/rijen erin kan met een paar bezoekers en slechte of geen indexering als heel snel tot performance problemen leiden. 
    • Mogelijke oplossingen: Optimaliseer uw database. OOK als het een standaard database is. Als u bijvoorbeeld OScommerce met een paar records gebruikt is er niets aan de hand. Doet u dit met veel records dan zal er toch echt geoptimaliseerd moeten worden. Niet alleen het CPU gebruik gaat hiermee fors naar beneden, ook uw site wordt aanzienlijk sneller en dus prettiger om te bezoeken.
  • Uw site heeft lange tijd zonder problemen gedraaid en opeens wordt hij traag en krijgt u CPU meldingen. 
  • U heeft een website met vele en vele losse files. Als u in DirectAdmin de bestandsexplorer start krijgt u waarschijnlijk zelfs een timeout omdat deze eerst de hele directory structuur wil lezen en dat te lang duurt. In dit geval kunt u het bestandsbeheer niet gebruiken in DA en bent u op FTP aangewezen. Echter het opslaan van meer dan 1.000 bestanden in 1 directory is nooit aan te raden. Een besturingssysteem heeft hier al snel moeite mee, backups worden traag, het openen van bestanden worden traag etc. etc.
    • Mogelijke oplossingen: Gebruik daar waar mogelijk zip of rar files; maak subdirectories/submappen aan met per directory/map niet meer dan 500 tot 1.000 bestanden. Maar eigenlijk is het voor een website toch het beste om extreem grote bestandsstructuren te voorkomen.
  • Het zou kunnen dat bepaalde tabellen in uw database ongemerkt gegroeid zijn. Het is goed om uw database af en toe via phpmyadmin te bekijken en de aantal records per tabel te controleren of dat overeenkomt met uw verwachtingen.
    • Als er tabellen zijn met veel records kijk dan of dit ook echt nodig is en schoon de tabellen daar waar mogelijk op. Gaat dat niet kijk dan of uw database geoptimaliseerd kan worden.

Processen

Een webserver kan een bepaalde hoeveelheid processen tegelijk aan(het aantal processen heeft niets te maken met het aantal bezoekers). Het bijzondere van een webserver proces is dat deze altijd heel kort actief is. Hij levert de pagina af bij de gebruiker en is vervolgens klaar. Dit gebeurd meestal in fracties van seconden, soms als het grote pagina's zijn iets langer. Op deze wijze kan een proces voor heel veel websites / bezoekers de pagina's bij de gebruikers bezorgen. Op het moment dat processen open blijven staan worden deze niet meer gerecycled en zal op den duur het geheugen van een server vollopen en wordt hij onbereikbaar, zeker als in combinatie daarmee ook het bezoekersaantal nog oploopt. Een ongewenste en ongewone situatie dus. Voor die tijd grijpen wij geautomatiseerd in en wordt de betreffende site op non-actief gezet.

Mogelijke oorzaken van teveel processen gebruiken

  • U heeft een script/programma die contact maakt met een andere server via bijv. curl, dat contact mislukt en uw programma blijft wachten. Als dit bij meerdere gebruikers gebeurd kan er als snel een probleem ontstaan.
    • Zorg dat iedere aanroep altijd vergezeld gaat van een timeout. Nooit meer als 1 of 2 seconden want als de gebruiker langer moet wachten klikt hij toch weg.
  • Uw site wordt 'geleeched'. Dat houdt in dat iets of iemand uw site geautomatiseerd probeert te kopieren. Alle onderdelen, fotos etc.
    • Probeer uit de apache logfile de mogelijke ipnummers te halen die dit veroorzaken en probeer ze te blokkeren. Zie onze FAQ voor een artikel over blokkeren ipnummers.
  • U lees iedere keer als een pagina ververst een RSS feed van andere site. Dat is niet verstandig,  dit maakt alles onnodig traag en kan ook deze problemen veroorzaken.
    • Lees maar om de X minuten RSS feeds in en dan alleen nog als er bezoekers zijn. Zorg ook dat bij het inlezen van die feeds een timeout in werking treed.

Zie ook: https://support.web-oke.nl/nl/articles/24100-directadmin-resource-usage-en-performance-problemen-resource-limit-is-reached