Download presentation
Presentation is loading. Please wait.
Published byGarry Duane Sparks Modified over 9 years ago
1
Designing Enterprise Drupal How to scale Drupal server infrastructure ENVIRONMENTS
2
INTRODUCTIONS Jason Burnett (jason@neospire.net)jason@neospire.net NeoSpire Director of Network Services Ben Chavet (bchavet@neospire.net)bchavet@neospire.net NeoSpire Senior Engineer Brian Skowron (bskowron@neospire.net)bskowron@neospire.net NeoSpire Account Executive
3
INTRODUCTIONS Jason Burnett (jason@neospire.net)jason@neospire.net – NeoSpire Director of Network Services
4
SO…FIRST THING’S FIRST Prerequisites that you’ll need (or at least want). – A good, reliable network with plenty of capacity – At least one expert Systems Administrator You don’t necessarily need this:
5
BUT YOU DON’T WANT THIS: (hopefully this isn’t you)
6
AFTER YOU’VE FIRED THAT GUY, ApachePHPDrupalMySQL VarnishApacheAPCPHPPressflowMemcachedSolrMySQL Default StackPerformance Stack LET’S TALK STACKS
7
FIRST, DON’T USE DRUPAL (WELL, SORTA) PressflowApachePHPDrupalMySQL Drop-in replacement for Drupal 6.x Support for database replication Support for reverse proxy caching Optimization for MySQL Optimization for PHP 5 Available at: http://fourkitchens.com/pressflow- makes-drupal-scale http://fourkitchens.com/pressflow- makes-drupal-scale
8
AFTER PRESSFLOW, IT’S ALL ABOUT CACHE Varnish ApachePHPPressflowMySQL Varnish is a reverse proxy cache Caches content based on HTTP headers Uses kernel-based virtual memory Watch out for cookies, authenticated users Available at http://varnish-cache.org/
9
HTTP PIPELINE Apache Configuration Varnish Configuration NameVirtualHost *:8080 Listen 8080 […] backend default {.host = "127.0.0.1";.port = "8080"; }
10
HTTP LOGGING VarnishNCSA daemon handles logging Default Apache logs will always show 127.0.0.1 Define a new log format to use X-Forwarded-For LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy CustomLog /var/log/apache2/access.log combined_proxy
11
CACHING WITH COOKIES sub vcl_recv { // Remove has_js and Google Analytics __* cookies. set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a- z]+|has_js)=[^;]*", ""); // Remove a ";" prefix, if present. set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); // Remove empty cookies. if (req.http.Cookie ~ "^\s*$") { unset req.http.Cookie; } sub vcl_hash { // Include cookie in cache hash if (req.http.Cookie) { set req.hash += req.http.Cookie; }
12
BASIC SECURITY // Define the internal network subnets acl internal { "127.0.0.0"/8; "10.0.0.0"/8; } sub vcl_recv { […] // Do not allow outside access to cron.php if (req.url ~ "^/cron\.php(\?.*)?$" && !client.ip ~ internal) { set req.url = "/404-cron.php"; }
13
VARNISH IS SUPER-FAST /etc/security/limits.conf Able to handle many more connections than Apache Needs a large number of file handles * soft nofile 131072 * hard nofile 131072
14
APACHE OPTIMIZATIONS Apache VarnishApachePHPPressflowMySQL Tune apache to match your hardware Setting MaxClients too high is asking for trouble Every application is different A good starting point is total amount of memory allocated to Apache divided by 40MB One of the areas that will need to be monitored and updated on an ongoing basis
15
STILL ALL ABOUT CACHE APC Opcode Cache APC VarnishApacheAPCPHPPressflowMySQL APC is an Opcode cache Officially supported by PHP Prevents unnecessary PHP parsing and compiling Reduces load on Memory and CPU
16
ALLOCATE ENOUGH MEMORY extension=apc.so apc.shm_size=120 apc.ttl=300 kernel.shmmax=13421 7728 Php.iniSysctl.conf FOR APC
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.