Techtalk2015 MOD_PHP vs PHP-FPM

29
Case: Drupal/DvG performance PHP-FPM vs MOD_PHP

Transcript of Techtalk2015 MOD_PHP vs PHP-FPM

Page 1: Techtalk2015 MOD_PHP vs PHP-FPM

Case: Drupal/DvG performance

PHP-FPM vs MOD_PHP

Page 2: Techtalk2015 MOD_PHP vs PHP-FPM

PHP-FPM vs MOD_PHP - Drupal/DVG Performance

AGENDA● WIE ZIJN WIJ?

● HOE WERKT EEN WEBSERVER?○ Apache○ Nginx

● MOD_PHP - PHP-FPM○ MOD_PHP○ PHP-FPM

● CACHING (UITSTAP)

● BENCHMARKS

● CONCLUSIE

● WEBSCALE AANPAK

PHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 3: Techtalk2015 MOD_PHP vs PHP-FPM

WIE ZIJN WIJ?● Webscale

○ Hosting sinds 2001○ Hosting voor professionals○ Gespecialiseerd in PHP frameworks

■ zoals Drupal■ maar ook Symfony, Wordpress, Typo3 & Magento

○ ISO 9001 en 27001 NL datacenters○ CISSP management○ 100% open source○ 300+ managed servers○ 200+ Drupal sites

○ Webscale werkt voor:■ Rijksoverheid, Gemeenten, Graydon, Jaguar Land Rover

○ Webscale werkt met:■ Cipix, d-Media, Merge, ezCompany

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 4: Techtalk2015 MOD_PHP vs PHP-FPM

HOE WERKT EEN WEBSERVER?

● Client/Server Model● HTTP of HTTPS(HTTP over SSL)

DRUPALWEBSERVER

BROWSERCLIENT

HTTP-REQUEST

HTTP-RESPONSE

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 5: Techtalk2015 MOD_PHP vs PHP-FPM

HOE WERKT APACHE?● Apache kent een tweetal modes waarin deze kan draaien:

○ PREFORK: Request per proces.

httpdlistener

:80:443

DRUPALWEBSERVER

REQUEST

REQUEST

REQUEST

HTTPD-PROCESS

HTTPD-PROCESS

HTTPD-PROCESS

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 6: Techtalk2015 MOD_PHP vs PHP-FPM

HOE WERKT APACHE?● Apache kent een tweetal modes waarin deze kan draaien:

○ WORKER: Ieder proces meerdere requests dmv threads.

httpdlistener

:80:443

DRUPALWEBSERVER

REQUEST

REQUEST

REQUESTHTTPD-PROCESS

THREAD

THREAD

THREAD

HTTPD-PROCESS

THREAD

THREAD

THREAD

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 7: Techtalk2015 MOD_PHP vs PHP-FPM

HOE WERKT NGINX?● Asynchronous, non-blocking, event-driven connection-handling algorithm.

○ C10K challenge○ Meerdere worker-processen (vaste waarde).○ Iedere worker heeft een “event-loop”, welke nieuwe events registreert.○ De worker haalt de events asynchroon uit de “event-loop” en verwerkt deze.○ Hierdoor worden de requests non-blocking afgehandeld.

nginxmaster

:80:443

REQUEST

REQUEST

REQUEST

WORKER-Process 1

WORKER-Process 2

WORKER-Process 3DRUPAL

WEBSERVER

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 8: Techtalk2015 MOD_PHP vs PHP-FPM

NGINX VS APACHEPROs Nginx t.o.v. Apache:

○ Schaalt enorm ver, zelfs met lage resources.○ CPU en memory verbruik zeer consistent.○ Eenvoudigere inschatting benodigde resources.○ Kan meer concurrent connecties aan dan Apache.○ Eenvoudiger in te zetten als proxy-server.

CONs Nginx t.o.v. Apache:○ Geen native dynamic-content processing (dus geen mod_php). *○ Geen .htaccess ondersteuning. *

* Dit maakt de worker ook zo klein en snel.* Ook dit is bewust, waardoor er geen “traversal” over het Filesystem nodig is.

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 9: Techtalk2015 MOD_PHP vs PHP-FPM

MOD_PHP vs PHP-FPM● Mod_php alleen mogelijk bij Apache

● Apache biedt keuze uit:○ mod_php○ mod_fastcgi (voor het aanspreken van php-fpm)

● Nginx alleen php-fpm mogelijk

● Mod_php = embedded

● Php-fpm = daemon

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 10: Techtalk2015 MOD_PHP vs PHP-FPM

MOD_PHP (alleen apache)● MOD_PHP:

httpdlistener

:80:443

DRUPALWEBSERVER

REQUEST

REQUEST

REQUEST

HTTPD-PROCESS

HTTPD-PROCESS

HTTPD-PROCESS

mod_php

mod_php

mod_php

● PROs:○ PHP uitgevoerd door Apache zelf.○ Geen externe processen nodig.○ PHP configuratie aanpasbaar

via .htaccess

● CONs:○ Apache Memory-footprint groter.○ PHP-interpeter voor non-PHP

content.○ Rechten op bestanden gelijk aan

webserver. (www-data).

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 11: Techtalk2015 MOD_PHP vs PHP-FPM

MOD_PHP● MOD_PHP:

PROs:○ Eenvoudiger in beheer.○ Voor veel sites vaak al voldoende.○ Bij PHP-only sites is het snel.

CONs:○ Memory-footprint.○ Lastig met bestandrechten.○ Restart apache nodig voor wijzigingen in php.ini.○ Gaat slecht om met php crashes.

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 12: Techtalk2015 MOD_PHP vs PHP-FPM

PHP-FPM I.C.M. APACHE ● MOD_FASTCGI:

httpdlistener

:80:443

DRUPALWEBSERVER

REQUEST

REQUEST

REQUEST

HTTPD-PROCESS

HTTPD-PROCESS

● PROs:○ PHP-code geisoleerd van Apache.○ Static-content niet via PHP.○ Rechten op bestanden instelbaar.

● CONs:○ Geen php-configuratie in .htaccess.○ Extern process nodig.

HTTPD-PROCESS

mod_fastcgi

PHP-FPM

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 13: Techtalk2015 MOD_PHP vs PHP-FPM

PHP-FPM I.C.M. NGINX

nginxmaster

:80:443

REQUEST

REQUEST

REQUEST

WORKER-Process 1

WORKER-Process 2

DRUPALWEBSERVER WORKER-Process 3

● Nginx heeft zelf geen native dynamic-content processing.● Daarom Nginx als proxy, php-requests doorzetten naar php-fpm.

PHP-FPM

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 14: Techtalk2015 MOD_PHP vs PHP-FPM

pool site02 pool site01

PHP-FPM● FPM - FastCGI Process Manager:

PHP-FPM: Master process

PHP-FPM-Worker: pool site01

PHP-FPM-Worker: pool site01

PHP-FPM-Worker: pool site01

PHP-FPM-Worker: pool site02

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

PHP-FPM-Worker: pool site02

Page 15: Techtalk2015 MOD_PHP vs PHP-FPM

PHP-FPM● FPM - FastCGI Process Manager:

PROs:○ Meerdere PHP-Workers (zelfs over meerdere servers).○ Worker-pools met eigen uids/gids.○ Meerdere php.ini opties.○ Logging en slowlogging.○ Status-interface.○ Emergency restart.○ Gracefull php-reload○ Security.

CONs:○ Complexer om te beheren○ Niet altijd sneller dan mod_php

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 16: Techtalk2015 MOD_PHP vs PHP-FPM

CACHING (UITSTAP)● Caching houdt opgevraagde resources in memory.● Hierdoor hoeft het (trage) filesystem niet telkens aangesproken te worden.● Verbeterde responsiveness van jouw sites.● Betere performance op dezelfde hardware.● PHP code hoeft niet opnieuw gecompiled te worden door de PHP-Interpreter.

● Verschillende oplossingen voor caching:○ Browser-caching.○ Apache-content-caching.○ Nginx-content-caching en micro-caching.○ Varnish.

● Caching via de (web)applicatie:○ Memcached○ Redis

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 17: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTestopstelling:

○ KVM VM, 4GB Memory, 2 vCPU, (E5-2620v2 2.1Ghz)

○ Debian 7.8 (old-stable):■ Apache 2.2.22■ Nginx 1.2■ PHP 5.4.36■ Varnish 3.0.2

○ Debian 8.1 (stable)■ Apache 2.4.10■ Nginx 1.6.2■ PHP 5.6.9■ Varnish 4.0.2

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 18: Techtalk2015 MOD_PHP vs PHP-FPM

Drupal voor Gemeenten

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 19: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 01 - ‘It Works!’:

○ Enkele html pagina met “It Works!” om baseline te bepalen.○ Apache-mpm-prefork: ab -n10000 -c100

Wheezy Jessie

4.546 3.586

3.556 3.228

3.531 2.971

3.464 3.117

3.637 3.214

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 20: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 01 - ‘It Works!’:

○ Enkele html pagina met “It Works!” om baseline te bepalen.○ Nginx: ab -n10000 -c100

Wheezy Jessie

2.255 1.44

2.335 1.445

2.239 1.457

2.18 1.432

2.199 1.429

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 21: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 01 - ‘It Works!’:

○ Enkele html pagina met “It Works!” om baseline te bepalen.○ Varnish met Apache-backend: ab -n10000 -c100

Wheezy Jessie

2.624 1.653

2.608 1.666

2.635 1.686

2.601 1.664

2.617 1.639

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 22: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 02 - DvG Installatie met test-data’:

○ Apache mod-php: ab -n1000 -c20

Wheezy Jessie

236.95 91.668

235.972 91.503

Dit is een extreme belasting!

Load op server werd onbruikbaar hoog.

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 23: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 02 - DvG Installatie met test-data’:

○ Apache php-fpm: ab -n1000 -c20

Dit is een extreme belasting!

Load op server werd onbruikbaar hoog.

Wheezy Jessie

237.328 86.504

238.103 84.998

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 24: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 02 - DvG Installatie met test-data’:

○ Nginx php-fpm: ab -n1000 -c20

Dit is een extreme belasting!

Load op server werd onbruikbaar hoog.

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Wheezy Jessie

235.874 85.692

234.788 85.026

Page 25: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 03 - DvG Installatie met test-data’:

○ Varnish met Nginx & php-fpm: ab -n1000 -c20

Dit is een extreme belasting!

Load op server blijft rustig.

Wheezy Jessie

2.208 2.019

2.208 2.03

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 26: Techtalk2015 MOD_PHP vs PHP-FPM

BENCHMARKSTest 03 - DvG Installatie met test-data’:

○ Varnish met Nginx & php-fpm: ab -n10000 -c100

Dit is een ZEER extreme belasting!

Load op server blijft rustig.

Wheezy Jessie

21.974 19.066

22.386 18.949

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 27: Techtalk2015 MOD_PHP vs PHP-FPM

CONCLUSIEConclusie van onze benchmarks:

● Nieuwe Debian 8.1 (Jessie) biedt al flinke performance-winst● Apache 2.4 is weer sneller dan Apache 2.2● Nginx 1.6 is weer sneller dan Nginx 1.2● Verschil mod-php VS php-fpm minimaal, maar FPM bied meer mogelijkheden.● Keuze belangrijker voor Ops dan Devs.● Voor echte winst is caching (Varnish) onmiskenbaar.

De toekomst brengt nog meer verbeteringen:● PHP-7● HHVM (HipHop Virtual Machine, ontwikkeld door Facebook)● Apache-mpm-event

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 28: Techtalk2015 MOD_PHP vs PHP-FPM

WEBSCALE AANPAK● Optimalisatie op meer dan alleen webservers en php:

○ Oplossingen en implementatie toegespitst op behoeften van de klant.○ Houdt nauwlettend trends in de gaten, om pro-actief aanpassingen door te voeren.○ Monitoring om pro- en in geval van calamiteit re-actief in te grijpen.○ Samen met de klant in dialoog voor beste performance en availability.○ Security staat hoog in ons vaandel.○ Mysql-Server tuning en optimalisatie.○ Linux kernel-tuning.○ Verdeling resources over hypervisors, storage en datacentrum.

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance

Page 29: Techtalk2015 MOD_PHP vs PHP-FPM

VRAGEN BIJ DE BORREL!

PHP-FPM vs MOD_PHP - Drupal/DVG PerformancePHP-FPM vs MOD_PHP - Drupal/DVG Performance