Drupal Performance Census: Live Lessons From Over 2000 Sites
1
Josh Koenig Co-Founder
Head of Productpantheon.io
drupal.org/user/3313@outlandishjosh
2
3
4
Efficient Dev Teams + Elastic Platform
5
6
7
8
9
Pantheon.io
Traditional Hosting
Even “fanatical” support can’t help with your app.Happy to reboot the box!
CMS Support Spectrum: What’s Missing?
10
“IaaS”
On your own vs the Zombie Apocalypse.Good luck!
Managed CMS
Sacrifice developer velocity to “guarantee” the application.Sorry, you can’t deploy that.
Pantheon.io
Traditional Hosting
Even “fanatical” support can’t help with your app.Happy to reboot the box!
CMS Support Spectrum: What’s Missing?
11
“IaaS”
On your own vs the Zombie Apocalypse.Good luck!
Managed CMS
Sacrifice developer velocity to “guarantee” the application.Sorry, you can’t deploy that.
?
12
There’s a better way to do this...
Pantheon.io
New Relic APM Pro: Launched June 26th
13
14
15
16
Pantheon.io
How the Data Flows
17
PHP
new_relic.so
Data Cloudrpm.newrelic.com
Collectornewrelic.daemon
On Pantheon In New Relic
Pantheon.io
What That Looks Like
18
Pantheon.io
New Relic Measures App Execution
19
Pantheon.io
Reverse-Proxy is Effectively Light-Speed
20
Pantheon.io
This Is Where The APM Action Is
21
22
23
24
25
26
Get the Data Already!
27
Pantheon.io
Census Methodology
● Actual Population: ~2000 sites ~3M transactions
● Mid-day one-hour data samples
● Queried out of New Relic’s API and then stored in MySQL
● Data Captured:
⌾ Total Throughput & response time
⌾ Query count & response time
⌾ External call count & response time
⌾ Views call count & response time
28
29
30
Only the names have been changed, to protect the innocent.
Just the facts, maam. Just the facts.
Pantheon.io
On Average: pretty good!
31
Pantheon.io
On Average: pretty good!
32
Pantheon.io
But… Painfully Slow at Times
33
Pantheon.io
Throughput and Performance Correlate
34
Pantheon.io
I/O is Still The Big Pain Point
> SELECT name, call_count, average_response_time, nrm.max_response_time FROM New_relic_metrics WHERE application_id = 513593
+-------------------------+------------+-----------------------+-------------------+| name | call_count | average_response_time | max_response_time |+-------------------------+------------+-----------------------+-------------------+| WebTransactionTotalTime | 4628 | 2570 | 426000.0000 || External/all | 7236 | 317 | 5000.0000 || Datastore/MySQL/all | 858749 | 1 | 1120.0000 || Datastore/Redis/all | 1757799 | 1 | 426.0000 |+-------------------------+------------+-----------------------+-------------------+
35
Pantheon.io
Views Isn’t a Kiss of Death
36
Pantheon.io
Views Isn’t a Kiss of Death
37
Pantheon.io
Views Isn’t a Kiss of Death
38
Pantheon.io
SQL Queries vs Avg Page Response
39
40
Pantheon.io
External API Calls
41
Pantheon.io
External API Calls
42
43
44
Pantheon.io
Long Loops and PHP Can Also Kill You
45
● Page responses 30s +
● No significant DB activity
● No web external calls
● ??????
● Stack trace shows lots of calls to form cache
● One REST API endpoint rendering ~1500 nodes (including building edit forms)
Looking Ahead
46
Pantheon.io
PHP 7 is Full of Win
47
Pantheon.io
PHP 7 is Full of Win
48
Pantheon.io
LCache is (potentially) full of win
49
Pantheon.io
LCache is (potentially) full of win
50
Pantheon.io
● Gather more data on Drupal 8
● Identifying modules associated w/slowness
● Build/measure/learn on core improvements
Future Data Spelunking
51
Questions?
52
Top Related