PHP at Density and Scale

18
PHP at Density and Scale How Pantheon sees the future of computing.

description

Mixing performance, configurability, density, and security at scale has, historically, been hard with PHP. Early approaches have involved CGIs, suhosin, or multiple Apache instances. Then came PHP-FPM. At Pantheon, we've taken PHP-FPM, integrated it with cgroups, namespaces, and systemd socket activation. We use it to deliver all of our goals at unheard-of densities: thousands and thousands of isolated pools per box. Watch how it's configured and see PHP-FPM pools start real-time to serve different Drupal sites as requests come into a server. All of our tools for this are open-source and usable on your own virtual machines and hardware.

Transcript of PHP at Density and Scale

Page 1: PHP at Density and Scale

PHP at Density and ScaleHow Pantheon sees the future of computing.

Page 2: PHP at Density and Scale

About Me

● Four Kitchens● Drupal.org● Pressflow● Pantheon● systemd

Page 3: PHP at Density and Scale

Topics● Performance

○ Socket activation○ Automount/autofs○ cgroups○ “Customer Experience Monitor”○ Migration

● Security○ Users○ Namespaces○ Defense-in-depth○ Non-disruptive fixes

Page 4: PHP at Density and Scale

Traditional server sockets: overview

...

nginxTCP80Client

nginxTCP81If you want a service

available, the daemon has to be running.

Page 5: PHP at Density and Scale

Socket activation: overview

systemd

TCP80Client

TCP81

nginxfd=3

Only a socket in systemd has to run for service availability.

Page 6: PHP at Density and Scale

Socket activation: details

● systemd squats on all listeners○ Looks for incoming traffic with EPOLL○ Starts the services/containers on-demand○ Passes socket to daemon as fd=3

● Not a proxy (same performance)● No client awareness

Page 7: PHP at Density and Scale

Socket activation: Pantheon’s use

● nginx and PHP-FPM● MariaDB soon

○ Using an alternative now● Allows 90%+ containers to be idle● Makes bootup sensible● Reconfiguration pattern is stop, not restart

Page 8: PHP at Density and Scale

Socket Activation

Demo

Page 9: PHP at Density and Scale

Automount/autofs

● Like socket activation for file system mounts○ Kernel squats on mount path and looks for traffic○ Brings up file mount lazily

● Used for FuseDAV (Valhalla client)

Page 10: PHP at Density and Scale

Automount Demo

Page 11: PHP at Density and Scale

cgroups

● Many options○ Pantheon uses CPUShares and BlockIOWeight

● Keeps things fair under contention○ Kind of like adding purple ropes when people are

queueing

Page 12: PHP at Density and Scale

Contentionwith cgroups Demo

Page 13: PHP at Density and Scale

Customer Experience Monitor

● Runs a representative Drupal site on every container host

● Reports scores to the API and monitoring● Influences migration and container

placement

Page 14: PHP at Density and Scale

Migration

● At density, rebalancing is important● Keep state lightweight

○ No OS○ No runtime

● Mutiny: migration as replication + promotion

Page 15: PHP at Density and Scale

Isolation for security

● Users● Namespaces

Page 16: PHP at Density and Scale

Defense in depth● Application

○ Drupal● Runtime

○ nginx, PHP-FPM, FuseDAV● Container: “binding” certificate

○ Linux user, namespaces, etc.● Container host: “endpoint” certificate

○ Only trusted for the containers assigned● Platform: root certificate

Page 17: PHP at Density and Scale

Non-disruptive fixes

● Kernel upgrades via migration● Rolling daemon and library upgrades

○ Heartbleed

Page 18: PHP at Density and Scale

Heartbleed Fix Demo