Drupal Efficiency

34
DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale 1 When Efficiency Matters Drupal at Scale Scott Mattoon Sun Microsystems, Inc. http://blogs.sun.com/downstream http://twitter.com/smattoon

description

Sun technologies to address Efficiency challenges for Developers(Coding, Testing Analyzing, Tuning, Collaborating) and for Deployers (Installing, Virtualizing, Securing, Scaling, Automating)

Transcript of Drupal Efficiency

Page 1: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

1

When Efficiency MattersDrupal at Scale

Scott MattoonSun Microsystems, Inc.http://blogs.sun.com/downstreamhttp://twitter.com/smattoon

Page 2: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Agenda

2

Page 3: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

NetBeans for Drupal

Page 4: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

NetBeans for Drupal

PHP Plugin http://wiki.netbeans.org/PHP Run and Debug project action – break points, watches Run single file, Debug single file, Run in command line Wizard for creating new php and phtml files Editing - Syntactic and Semantic coloring Code Completion File system code completion for include/require Bracket Matching Automatic Insertions (brackets, braces, parens, quotes) Code Navigation - Go to Declaration/Type, Hyperlinking Refactoring - Instant Rename

Drupal Module and Theme Wizard http://is.gd/lgnB generates required files provides template code

Page 5: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Page 6: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

VirtualBox for Drupal

Page 7: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Top 10 Reasons for Running Virtual Box 10 - You want to impress your friends.

9 - Your wife has told you one more computer in the house and she's gone.8 - Windows 3.1 is your favorite operating system.7 - You want to make sure you have deleted all traces of what you have done.6 - You want to give root to your baby sister.5 - You want to try writing a kernel module while drunk.4 - You want to install that cracked version of Photo Shop.3 - You've always wondered what deleting /bin would do.2 - You really REALLY want to click on that email attachment.1 - You like running that older version of Internet Explorer.

Page 8: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Page 9: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

9

OpenSolaris for Drupal

Page 10: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

WebStackOpenSolaris AMP +++Django 1.0.2

SUNWmozldap 6.0.4

SUNWxalanc 1.10.0

SUNWxercesc 2.8.0

drupal 6.3

drupal-demo 6.3

nginx 0.6.35

phpmyadmin 2.11.7

python-cheetah 2.0.1

python-configobj 4.5.3

python-genshi 0.5.1

python-paste 1.7.1

python-paste-deploy 1.3.2

python-simplejson 1.9.2

python-simpletal 4.1

python-turbocheetah 1.0

python-turbojson 1.1.4

python-turbokid 1.0.4

varnish 2.0.2

webstack-dev-tools 0.1

Page 11: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Solaris – Linux Performance

Page 12: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

THROUGHPUT Lightweight & Complex Workloads

Solaris – Linux Performance

Page 13: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

THROUGHPUT zoom inComplex Workloads

Solaris – Linux Performance

Page 14: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

14

The S in SAMP stands for SolarisSolaris Zones

★ Free, lightweight and easy virtualization★ Allocate a “system” to each app instance or to each developer★ Resources are controlled in one of three ways

• Capped Resources: Upper limit on consumption• Guaranteed Resources: Guarantee of a minimum available• Dedicated Resources: Resources are set aside for

★ share filesystems and network across zonesOR

★ dedicate filesystems and network to individual zones

Page 15: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

15

Need Efficiency & Control?Hypothetical Constraints & Objectives

Constraints: one server available need to host four environments:

(2) Developers (1) Test environment (1) Production environment

Objectives: maximize sharing, minimize redundancy guarantee max. resources for production maximize efficiency & consistency btw. envs.

Page 16: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

globalzone zoneBzoneA qazone prodzone

Solaris Zones for Efficiency & Control...

dbzone1

MySQL MySQL

Apache

PHP PHP

Apache

PHP

Apache

PHP

Apache

PHP

Apache

Page 17: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

globalzone zoneBzoneA qazone prodzone

/usr/ -ro -ro /usr’ ./apache -ro ./mysql -ro ./php -rw /data/drupal-6.10 -rw -ro -ro /data/drupal-5.10 ./misc -ro -ro ./modules -ro -ro ./scripts -ro -ro ./sites -rw -ro ./themes -ro -ro ./files -ro -rw

Solaris Zones for Efficiency & Control...

Page 18: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

“DTrace is one of those tools that makes you wonder how you did anything without it before you'd heard of it. Why is it better than strace and similar tools? It's non-invasive, fast, scriptable and extensible.”

- Wez Furlong

Find Hampster Wheels with DTraceDTrace provider for PHP

Page 19: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Performance Tuning - DEMODTrace provider for PHP

Which functions are being called by Drupal?# dtrace -n function-entry'{printf("called %s() in %s at \ line %d\n",copyinstr(arg0), copyinstr(arg1), arg2)}' -q

How many times is a function called?# dtrace -n function-entry'{@[copyinstr(arg0)] = count()}'

What's the file name and line number count:# dtrace -n function-entry'{@[copyinstr(arg1)] = \ lquantize(arg2, 0, 5000)}'

Page 20: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

20

Security

RBAC− Assign users to roles with privileges they need

Process Rights Management− Run with least privileges− E.g., not root, nosuid, noexec

Page 21: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Versioning & Protecting Data

$ zfs snapshot /data/site@31Oct

$ zfs snapshot /data/site@01Nov

- - - DEPLOY -> SMOKE-TEST -> UH-OH! - - -

$ cp .zfs/snapshot/@01Nov/Drupal_5.2/themes/mysite \./Drupal_5.2/themes

ZFS snapshots & Rollback

Page 22: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Project CarolineCloud Computing - Platform as a Service

Your Service Code

Resource Types

Launch service using multiple load-balanced processes, connected

to a backend database.

Flex processes tomatch demand.

+

Internet

●●●

Page 23: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Drupal and JavaPHP apps on Glassfish

Two Options: Quercus http://caucho.com/products/quercus.xtp LRWP on Glassfish http://is.gd/mhxP

Gives you: Database connection pooling JIT Compiler Makes possible clustering with Terracotta Access to vast Java class library

Page 24: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

24

Cool Drupal Siteon Solaris

Page 25: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Page 26: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

26

• 7 Creative Commons Licenses• Drupal 5.10 + >12 new modules• X64 tuned Webstack• Solaris 10• (2) SunFire X2200 M2 servers• (1) 6TB SunStorage 3511• Hosted at AMD datacenter

Page 27: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Page 28: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Page 29: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

For More InformationGet OpenSolaris

− http://opensolaris.org/os/downloads/

ZFS− http://opensolaris.org/os/community/zfs/ − http://tinyurl.com/235vxe

RBAC− http://blogs.sun.com/darren/tags/rbac

Project Caroline− https://www.projectcaroline.net/

VBox – Free Virtualization software− http://www.virtualbox.org/

Page 30: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

For More InformationNetBeans

− http://www.netbeans.org/

VBox – Free Virtualization software− http://www.virtualbox.org/

Project Caroline− https://www.projectcaroline.net/

Glassfish − http://glassfish.java.net/

Running MySQL in Solaris Zones− http://wikis.sun.com/display/BluePrints/Running+MySQL+Database+in+Solaris+Containers%20

Page 31: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

For More InformationGet OpenSolaris

− http://opensolaris.org/os/downloads/

ZFS− http://opensolaris.org/os/community/zfs/ − http://tinyurl.com/235vxe

SMF & Security− http://www.opensolaris.org/os/community/smf/ − http://www.sun.com/software/solaris/howtoguides/s10securityhowto.jsp

DTrace− http://blogs.sun.com/bmc/entry/dtrace_and_php_demonstrated− http://blogs.sun.com/angelo/entry/dtrace_meet_the_amp_apache

RBAC− http://blogs.sun.com/darren/tags/rbac

Page 32: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Q&A

Scott Mattoon

http://blogs.sun.com/downstreamtwitter: smattoon

Page 33: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

Resource Management & IsolationProjects and Zone resource configuration

Projects# projadd -c "Apache-PHP" -U webservd httpd.php# projmod -sK "project.max-sem-ids=(privileged,256,deny)" httpd.php# svccfg -s http:CSKapache2 setprop start/project = astring: httpd.php# svcadm -v enable CSKapache2

CPU Sharesglobal# zonecfg -z zone1zonecfg:zone1> add rctlzonecfg:zone1:rctl> set name=zone.cpu-shareszonecfg:zone1:rctl> add value (priv=privileged,limit=15,action=none)zonecfg:zone1:rctl> endzonecfg:zone1> exit

Page 34: Drupal Efficiency

DrupalCon DC 2009 | When Efficiency Matters - Drupal at Scale

The S in SAMP stands for Solaris

MySQL # svcadm -v enable mysql

# svcadm refresh mysql # svcadm restart mysql # svcadm disable mysql

Apache # svcadm -v enable apache22

# svcadm refresh mysql # svcadm restart mysql # svcadm disable mysql

SMF for MySQL & Apache