1 / 15

Designing Enterprise Drupal

Designing Enterprise Drupal. Environments. How to scale Drupal server infrastructure. Jason Burnett ( jason@neospire.net ) NeoSpire Director of Network Services Ben Chavet ( bchavet@neospire.net ) NeoSpire Senior Engineer Brian Skowron ( bskowron@neospire.net )

Download Presentation

Designing Enterprise Drupal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Designing Enterprise Drupal Environments How to scale Drupal server infrastructure

  2. Jason Burnett (jason@neospire.net) NeoSpire Director of Network Services Ben Chavet (bchavet@neospire.net) NeoSpire Senior Engineer Brian Skowron (bskowron@neospire.net) NeoSpire Account Executive Introductions

  3. 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 expertSystems Administrator • You don’t necessarily need this:

  4. But you don’t want this: (hopefully this isn’t you)

  5. After you’ve fired that guy, let’s talk stacks Default Stack Performance Stack

  6. First, don’t use Drupal (well, sorta) • 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

  7. After Pressflow, it’s all about Cache • 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/

  8. HTTP Pipeline Apache Configuration Varnish Configuration NameVirtualHost *:8080 Listen 8080 <VirtualHost *:8080> […] </VirtualHost> backend default { .host = "127.0.0.1"; .port = "8080"; }

  9. 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

  10. 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; } }

  11. 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"; } }

  12. 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

  13. Apache Optimizations • 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

  14. Still all about Cache • APC Opcode Cache • APC is an Opcode cache • Officially supported by PHP • Prevents unnecessary PHP parsing and compiling • Reduces load on Memory and CPU

  15. allocate enough memory FOR APC extension=apc.so apc.shm_size=120 apc.ttl=300 Php.ini Sysctl.conf kernel.shmmax=134217728

More Related