Öka PHP-prestanda med APC
Publicerat 28 september 2008 av Christian
Om du har en webbplats som körs med PHP, bör du nog prova att installera en accelerator som APC. Det kan öka prestanda flera gånger om! (2–10 gånger enligt Wikipedia.)
Vid varje begäran till ditt PHP-skript, måste PHP kompilera det till bytekod innan processorn kan exekvera det. Dumt nog sparas inte denna kompilerade kod någonstans (som i exempelvis Python). Det slösas alltså bort en väldig massa processorkraft på att göra samma sak om och om igen!
Som tur var finns det flera olika acceleratorer som sparar den färdiga bytekoden i minnet. Jag har tittat på APC, som är enkel att installera och ger bra prestanda. Du behöver bara installera och starta om Apache, så är det klart!
Plug and play.
Jag mätte själv prestanda (med ab) på ett enkelt PHP-skript som körs på ramverket CodeIgniter och fick detta resultat:
- Utan APC: 85 ms/anrop
- Med APC: 20 ms/anrop
De exakta siffrorna är inte så relevanta, det intressanta är förbättringen av prestanda. Klart och tydligt!
Nackdelen med acceleratorer är förstås att de kräver minne för att fungera, men hur mycket är konfigurerbart åtminstone i APC. Apache-processerna delar också på samma cache, så det behöver inte bli så farligt mycket.
Så här installerar du APC under Debian/Ubuntu med Apache 2 (Prefork) och PHP 5:
apt-get install apache2-prefork-dev php5-dev php-pear pecl install apc
Svara ja på frågorna och lägg till denna rad i php.ini:
extension=apc.so
Starta om Apache, så är det alltså klart — och dina PHP-skript kommer köras betydligt snabbare. Men mät för säkerhets skull prestanda både med och utan APC.
Relaterade artiklar:



Sjukt bra tips, ska installeras och testas. Tack!
Bra tips! Funkar detta på WordPress?
Eftersom WordPress körs med PHP, snabbar det också upp WordPress.
Det här var nytt! Jag ska testa det på direkten.
En liten återkoppling; Den upplevda laddningstiden är iallafall brutalt mycket snabbar! Tack för tipset!
Bra tips som tål att uppmärksammas.
Mina erfarenheter av APC är att den är lite mer stabil än eaccelerator (http://eaccelerator.net/) men eaccelerator är betydligt snabbare i en stor miljö.
Jag körde 3 webbservrar på 20 miljoner dynamiska PHP sidor/vecka med eaccelerator, med APC var vi tvugna att köra samma belastning på 5 servrar. Utan PHP-cache skulle jag tänka mig att vi behövt 20 webbservrar.
Mycket bra tips! Jag tror att APC eller liknande kommer vara med som standard i PHP6. Har för mig jag har läst det någonstans.