Date post: | 11-May-2015 |
Category: |
Technology |
Upload: | jon-peck |
View: | 1,115 times |
Download: | 2 times |
A Prefect Lunch…Evry Tim
#SANDcramp 2014
A Perfect Launch…Every Time#SANDcamp 2014
Challenges for a perfect launch● On time● On budget● On Plan
Encourage self-sufficient users● Reduce cost● Easier to work and learn● Maintain good communication
OnboardingConverting Newbies to Pros
How we prepare for launch● Aim: Get rid of all the “uh-oh” moments● Recipe: Set clients up for success● Stakeholders:
○ Project Manager - scheduling, best practices○ Developer - platform knowledge, integration○ Sys Admin - responsibilities, delegation○ Business owner - flawless launch
Have a system and tools● Specify common workflow requirements
○ Repeatable tasks, delegatable● Project management - Wrike, JIRA, etc.● Orientation logistics
○ Scheduling - calendar, deadlines○ Real-time communication
■ Phone, Video Conference, GoToMeeting, IRC○ Training - documentation, Slides, Videos
Mapping the territory● Scoping of responsibilities
○ Reduce confusion, set stage● Channels of communication
○ Define emergency procedures○ Issue tracking as primary inbox
● Staying in touch○ Available, open, and regular○ Proactive
Site AuditLandmines, acid pools, and dead weight.
Why audit sites?● Ensure optimal configuration● Every site is unique, but…● Built with the same framework● Similar architectural requirements● One size fits most.
What is static program analysis?● Performance & behavior gathering● Does not execute● Non-intrusive● Automated
Why use static program analysis?● Fast● Repeatable● Detects common problems
What is Site Audit?● Drupal 7 static analysis
○ https://drupal.org/project/site_audit● Best practices● Actionable report● Vendor agnostic
○ Optional Pantheon specific recommendations
What can Site Audit analyze?● Drupal caching settings● Codebase and file size● Database structure● Modules, including duplicate / missing● Non-standard code structures● Views caching● Watchdog logs
What does it not analyze?● DOM / front-end performance● Usability and site experience● Aesthetics● Content
Drush format
HTML format with optional Bootstrap
JSON format
Launch Check● Site Audit in the Pantheon dashboard
○ Uses --vendor=pantheon config● Most actionable checks● Runs automatically
Best practices
Drupal caching settings
Drupal cron
Drupal’s database
Extensions (modules & themes)
Drupal’s System Status
Users
Views
Watchdog
● 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
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
Good configuration matters.
Load TestingObliterate surprises with actionable results
What does a load test measure?● Performance● Smoke● Spike● Stress● Capacity
Why load test?● Resource planning● A/B testing● Budgeting
When should I load test?● Before you write your first line of code!
○ Xdebug, Webgrind, Devel, Syslog, Watchdog, New Relic
● Incrementally during development● Prior to launch
Caching● Opcode Cache
○ APC, Zend Opcache, eAccelerator● Backends
○ Memcached, Redis, MongoDB, file system, APC● Front-end caching
○ Varnish, Squid, reverse-proxy CDNs
Testing Varnish with cURL
What to expect during & after● Benchmark often (datapoints vs aggregate)● Be reasonable● Numbers should dictate expectations (back-
end not just Google analytics)
PHP Slow Log
Nginx error log
MySQL slow log# Time: 130320 7:30:26
# User@Host: db_user[db_database] @ localhost []
# Query_time: 4.545309 Lock_time: 0.000069 Rows_sent: 219 Rows_examined: 254
SET timestamp=1363779026;
SELECT option_name, option_value FROM wp_options
WHERE autoload = 'yes';
Pay attention to watchdog6652 11/Oct 15:05 warning php Warning: Cannot modify header information - headers already sent by (output started at /srv/www/code/includes/common.inc:2700) in drupal_goto() (line
6643 11/Oct 14:21 notice php Notice: Trying to get property of non-object in cap_ui_preprocess_page() (line 27 of /srv/www/code/sites/all/themes/cap_ui/ template.php).
6595 11/Oct 13:00 notice php Notice: Unknown: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=2) in main() (line of ).
New Relic
Who should execute the test● Developers execute● Involve stakeholders
Where to perform the test● Live environment
○ Bandwidth● Resource limitations● SaaS
Tools for load testing● DIY and simple
○ Apache Bench● Complex / dynamic
○ Apache JMeter○ Load Impact○ Load Storm
Interpreting results● Hard numbers● Business impact
Load Test report
@getpantheonirc.freenode.net #pantheon
getpantheon.com
Thank you! Questions?