Download - DrupalCon 2014: A Perfect Launch, Every Time
![Page 1: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/1.jpg)
A Perfect Launch,
Every Time
DrupalCon Austin 2014
![Page 2: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/2.jpg)
What is a perfect launch?
● Schedule - On Time
● Cost - On Budget
● Scope - On Plan
![Page 3: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/3.jpg)
Why should you care?
![Page 4: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/4.jpg)
A Perfect Launch Recipe
● Launch Team - Onboarding
● Launch Check - Best Practices
● Load Test - Performance Tuning
![Page 5: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/5.jpg)
Launch Team
Onboarding
![Page 6: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/6.jpg)
How we prepare for launch
● Goal: Get rid of all the “uh-oh” moments
● Method: Launch Team
● Stakeholders:
o Project Manager - scheduling, best practices
o Developer - platform knowledge, integration
o Sys Admin - responsibilities, delegation
o Business owner - flawless launch
![Page 7: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/7.jpg)
Have a system and tools
● Specify common workflow requirements
o Repeatable tasks, delegatable
● Project management - Wrike, JIRA, Redmine
● Orientation logistics
o Scheduling - calendar, deadlines
o Real-time communication
Phone, Video Conference, GoToMeeting, IRC
o Training - documentation, Slides, Videos
![Page 8: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/8.jpg)
Mapping the terrain
● Scoping of responsibilities
o Reduce confusion, set stage
● Channels of communication
o Define emergency procedures
o Issue tracking as primary inbox
● Staying in touch
o Available, open, and regular
o Proactive
![Page 9: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/9.jpg)
![Page 10: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/10.jpg)
Launch Check
Best Practices
![Page 11: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/11.jpg)
What is Site Audit?
● Drupal 7 static analysis
o https://drupal.org/project/site_audit
● Best practices
● Actionable report
● Vendor agnostic
o Optional Pantheon specific recommendations
![Page 12: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/12.jpg)
What can an audit analyze?
● Drupal caching settings
● Codebase and file size
● Database structure
● Modules, including duplicate / missing
● Non-standard code structures
● Views caching
● Watchdog logs
![Page 13: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/13.jpg)
![Page 14: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/14.jpg)
Drupal caching settings
![Page 15: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/15.jpg)
Drupal cron
![Page 16: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/16.jpg)
Drupal’s database
![Page 17: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/17.jpg)
Extensions (modules & themes)
![Page 18: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/18.jpg)
Views
![Page 19: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/19.jpg)
Watchdog
![Page 20: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/20.jpg)
● Simple Drupal 7 site
● Apache Bench
○ 10,000 requests to home page (5 concurrent)
● Warmed cache, cleared watchdog
● Comparison
○ Bad config, 1 PHP notice and warning in theme
○ Good config, no PHP notices or warnings
Test Configuration
![Page 21: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/21.jpg)
Result? Doubled performance.
Bad config, errors
● 20 min, 52 sec
● Requests per second: 7.98
● Time per request: 626.192 ms
Good config, no errors
● 10 min, 25 sec
● Requests per second: 15.99
● Time per request: 312.780 ms
![Page 22: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/22.jpg)
Good configuration matters.
![Page 23: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/23.jpg)
Load Testing
Performance Tuning
![Page 24: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/24.jpg)
Why load test?
● Validate response times under peak load
● Smoke - operations under normal load
● Stress - behavior past peak load
o Spike - short bursts
● Capacity - plan for growth
![Page 25: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/25.jpg)
Who should execute load tests?
● Developers execute
● Involve stakeholders
![Page 26: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/26.jpg)
Tools for load testing
● DIY and simple
o Apache Bench
● Complex / dynamic
o Apache JMeter
o Load Impact
o Load Storm
![Page 27: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/27.jpg)
When should I load test?
● Baseline
● Tools
o Xdebug, Webgrind, Devel, Syslog, Watchdog, New Relic
● Incrementally during development
● Prior to launch
![Page 28: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/28.jpg)
Where do I perform load tests?
● Live environment
o Bandwidth
● Resource limitations
● SaaS load testing solutions
![Page 29: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/29.jpg)
What to expect during & after
● Benchmark often (datapoints vs aggregate)
● Be reasonable
● Numbers should dictate expectations (back-end not just Google analytics)
![Page 30: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/30.jpg)
Caching
● Opcode Cache
o APC, Zend Opcache, eAccelerator
● Backends
o Memcached, Redis, MongoDB, file system, APC
● Front-end caching
o Varnish, Squid, reverse-proxy CDNs
![Page 31: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/31.jpg)
Back-end caching
Redis: Engage!
![Page 32: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/32.jpg)
Front-end caching
Anonymous page caching: Disabled!
![Page 33: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/33.jpg)
Testing Varnish with cURL
![Page 34: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/34.jpg)
![Page 35: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/35.jpg)
PHP Slow Log
![Page 36: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/36.jpg)
Nginx error log
![Page 37: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/37.jpg)
MySQL slow log
# Tim e: 130320 7:30:26
# User@ Host: db_user[db_database] @ localhost []
# Q uery_tim e: 4.545309 Lock_tim e: 0.000069 Row s_sent: 219 Row s_exam ined: 254
SET tim estam p= 1363779026;
SELECT option_nam e, option_value FRO M w p_options
W HERE autoload = 'yes';
![Page 38: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/38.jpg)
Pay attention to watchdog
6652 11/O ct 15:05 w arning php W arning: Cannot m odify header inform ation - headers already sent by (output started
at /srv/w w w /code/includes/com m on.inc:2700) in drupal_goto() (line
6643 11/O ct 14:21 notice php Notice: Trying to get property of non-object in cap_ui_preprocess_page() (line 27 of
/srv/w w w /code/sites/all/them es/cap_ui/tem plate.php).
6595 11/O ct 13:00 notice php Notice: Unknow n: Can not authenticate to IM AP server: [AUTHENTICATIONFAILED] Invalid
credentials (Failure) (errflg= 2) in m ain() (line of ).
![Page 39: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/39.jpg)
Good load test
![Page 40: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/40.jpg)
Bad load test
![Page 41: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/41.jpg)
Interpreting results
● Hard numbers
● Business impact
![Page 42: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/42.jpg)
A Perfect Launch, Every Time
![Page 43: DrupalCon 2014: A Perfect Launch, Every Time](https://reader033.vdocument.in/reader033/viewer/2022051611/54b7388b4a7959be4c8b468c/html5/thumbnails/43.jpg)
@ getpantheon
irc.freenode.net # pantheon
getpantheon.com
Thank you! Questions?