Drupal performance tweaking - APC
Er bestaan een aantal mogelijkheden om de performantie van je drupal site aanzienlijk te verbeteren. Een van de meest eenvoudige manieren, is door APC te installeren. Klanten van Robusta Hosting kunnen direct gebruik maken van deze voordelen, vermits we APC standaard aanbieden aan al onze shared hosting klanten.
APC staat voor Alternative PHP Cache, en is een caching mechanisme voor de gecompileerde PHP code. In CMS systemen zoals drupal is de meeste code afgeschermd voor de gebruiker, en deze code verandert dus ook niet zo vaak. Om deze code dan telkens van het filesysteem te gaan lezen, en te laten compileren door de PHP compiler, is een hoop overbodig werk, vermits de code meestal niet gewijzigd is t.o.v. de vorige keer dat de code uitgevoerd werd. Vandaar dat je dan ook zo'n opmerkelijke resultaten kan behalen met gewoonweg de APC module te installeren.
Een voorbeeldje van de performantieverbetering door APC vind je hieronder. Voor onze site hebben we de responsetijd kunnen terugbrengen van ca. 630 ms naar gemiddeld 520 ms.
Installatie van APC
Installatie van APC is vrij eenvoudig als je pear geïnstalleerd hebt. Installatie van pear is voorzien in onderstaande install script
echo "Installing dependencies" apt-get -y install php-pear php5-dev apache2-dev echo "Installing apc" pecl install apc
Na de installatie moet je er ook voor zorgen dat php gebruik kan maken van de nieuw geïnstalleerde module. Dit kan je doen door volgende regels aan je php.ini toe te voegen:
extension=apc.so 'Voegt de apc module toe apc.enabled=1 'Activeer de apc module apc.shm_size=48M 'Ken 48 MB geheugen toe aan de apc module apc.rfc1867 = 1 'Laat toe om uploadvoortgang weer te geven in drupal
Daarna nog je apache herstarten, en je bent klaar op APC te gebruiken.
/etc/init.d/apache2 restart
Tweaking
De bovenstaande settings kennen 48 MB geheugen toe aan je APC cache. Voor de meeste drupal-installaties is dit genoeg, maar als je veel modules geïnstalleerd hebt, kan dit niet voldoende blijken, en zal je deze setting moeten verhogen. Een handig hulpmiddel om dit op de volgen, is de apc.php pagina die meegeleverd is met het apc package (als je dit niet terugvindt, je kan het apc package downloaden van http://pecl.php.net/package/APC). Als je vaststelt dat quasi je volledige geheugen gebruikt is, terwijl je nog steeds niet boven de 90% hits geraakt, weet je dat je best je geheugensettings verhoogt. Een grafiek zoals hieronder geeft aan dat je geheugensettings zeer ruim zijn ingesteld, en je niet gauw tegen limieten zal oplopen.
Extra: gescripte installatie voor Virtualmin
Voor mensen die verschillende websites hosten op een Virtualmin omgeving, en die al deze sites willen laten profiteren van APC, kan onderstaand script nuttig zijn. Dit script installeert APC op de server (of update naar de laatste versie als het al geïnstalleerd zou zijn). Vervolgens zal het voor alle bestaande servers de php.ini settings updaten zodat APC ingeschakeld wordt. Tenslotte wordt ook de hulppagina apc.php in de homefolder van alle websites geplaatst.
Wanneer alle changes uitgevoerd zijn, wordt apache herstart om de nieuwe settings van kracht te laten worden.
#!/bin/sh # This is a comment echo "Downloading apc.php" wget -O /tmp/apc.tgz http://pecl.php.net/get/APC-3.1.13.tgz tar zxvf /tmp/apc.tgz echo "Installing dependencies" apt-get -y install php-pear php5-dev apache2-dev echo "Installing apc" pecl install apc echo "Adding extension=apc.so to each php.ini" cd /home for dir in "/home"/*; do if test -d "$dir"; then if [ -d "$dir/etc" ]; then echo "Updating the php settings in $dir/etc/php.ini" echo "extension=apc.so" >> $dir/etc/php.ini echo "apc.enabled=1" >> $dir/etc/php.ini echo "apc.shm_size=48M" >> $dir/etc/php.ini echo "apc.rfc1867 = 1" >> $dir/etc/php.ini cp /tmp/APC-3.1.13/apc.php $dir/public_html/apc.php myname=`stat -c '%U' $dir` chown $myname:$myname $dir/public_html/apc.php fi fi done echo "Restarting Apache" /etc/init.d/apache2 restart
Wil je de volledige controle over jouw website? Neem eens een kijkje bij onze aantrekkelijk geprijsde virtual servers.
Add new comment