52
Drupal Performance Census: Live Lessons From Over 2000 Sites 1

Drupal Performance Census - BADCamp 2016

Embed Size (px)

Citation preview

Page 1: Drupal Performance Census - BADCamp 2016

Drupal Performance Census: Live Lessons From Over 2000 Sites

1

Page 2: Drupal Performance Census - BADCamp 2016

Josh Koenig Co-Founder

Head of Productpantheon.io

drupal.org/user/3313@outlandishjosh

2

Page 3: Drupal Performance Census - BADCamp 2016

3

Page 4: Drupal Performance Census - BADCamp 2016

4

Efficient Dev Teams + Elastic Platform

Page 5: Drupal Performance Census - BADCamp 2016

5

Page 6: Drupal Performance Census - BADCamp 2016

6

Page 7: Drupal Performance Census - BADCamp 2016

7

Page 8: Drupal Performance Census - BADCamp 2016

8

Page 9: Drupal Performance Census - BADCamp 2016

9

Page 10: Drupal Performance Census - BADCamp 2016

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.

Page 11: Drupal Performance Census - BADCamp 2016

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.

?

Page 12: Drupal Performance Census - BADCamp 2016

12

There’s a better way to do this...

Page 13: Drupal Performance Census - BADCamp 2016

Pantheon.io

New Relic APM Pro: Launched June 26th

13

Page 14: Drupal Performance Census - BADCamp 2016

14

Page 15: Drupal Performance Census - BADCamp 2016

15

Page 16: Drupal Performance Census - BADCamp 2016

16

Page 17: Drupal Performance Census - BADCamp 2016

Pantheon.io

How the Data Flows

17

PHP

new_relic.so

Data Cloudrpm.newrelic.com

Collectornewrelic.daemon

On Pantheon In New Relic

Page 18: Drupal Performance Census - BADCamp 2016

Pantheon.io

What That Looks Like

18

Page 19: Drupal Performance Census - BADCamp 2016

Pantheon.io

New Relic Measures App Execution

19

Page 20: Drupal Performance Census - BADCamp 2016

Pantheon.io

Reverse-Proxy is Effectively Light-Speed

20

Page 21: Drupal Performance Census - BADCamp 2016

Pantheon.io

This Is Where The APM Action Is

21

Page 22: Drupal Performance Census - BADCamp 2016

22

Page 23: Drupal Performance Census - BADCamp 2016

23

Page 24: Drupal Performance Census - BADCamp 2016

24

Page 25: Drupal Performance Census - BADCamp 2016

25

Page 26: Drupal Performance Census - BADCamp 2016

26

Page 27: Drupal Performance Census - BADCamp 2016

Get the Data Already!

27

Page 28: Drupal Performance Census - BADCamp 2016

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

Page 29: Drupal Performance Census - BADCamp 2016

29

Page 30: Drupal Performance Census - BADCamp 2016

30

Only the names have been changed, to protect the innocent.

Just the facts, maam. Just the facts.

Page 31: Drupal Performance Census - BADCamp 2016

Pantheon.io

On Average: pretty good!

31

Page 32: Drupal Performance Census - BADCamp 2016

Pantheon.io

On Average: pretty good!

32

Page 33: Drupal Performance Census - BADCamp 2016

Pantheon.io

But… Painfully Slow at Times

33

Page 34: Drupal Performance Census - BADCamp 2016

Pantheon.io

Throughput and Performance Correlate

34

Page 35: Drupal Performance Census - BADCamp 2016

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

Page 36: Drupal Performance Census - BADCamp 2016

Pantheon.io

Views Isn’t a Kiss of Death

36

Page 37: Drupal Performance Census - BADCamp 2016

Pantheon.io

Views Isn’t a Kiss of Death

37

Page 38: Drupal Performance Census - BADCamp 2016

Pantheon.io

Views Isn’t a Kiss of Death

38

Page 39: Drupal Performance Census - BADCamp 2016

Pantheon.io

SQL Queries vs Avg Page Response

39

Page 40: Drupal Performance Census - BADCamp 2016

40

Page 41: Drupal Performance Census - BADCamp 2016

Pantheon.io

External API Calls

41

Page 42: Drupal Performance Census - BADCamp 2016

Pantheon.io

External API Calls

42

Page 43: Drupal Performance Census - BADCamp 2016

43

Page 44: Drupal Performance Census - BADCamp 2016

44

Page 45: Drupal Performance Census - BADCamp 2016

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)

Page 46: Drupal Performance Census - BADCamp 2016

Looking Ahead

46

Page 47: Drupal Performance Census - BADCamp 2016

Pantheon.io

PHP 7 is Full of Win

47

Page 48: Drupal Performance Census - BADCamp 2016

Pantheon.io

PHP 7 is Full of Win

48

Page 49: Drupal Performance Census - BADCamp 2016

Pantheon.io

LCache is (potentially) full of win

49

Page 50: Drupal Performance Census - BADCamp 2016

Pantheon.io

LCache is (potentially) full of win

50

Page 51: Drupal Performance Census - BADCamp 2016

Pantheon.io

● Gather more data on Drupal 8

● Identifying modules associated w/slowness

● Build/measure/learn on core improvements

Future Data Spelunking

51

Page 52: Drupal Performance Census - BADCamp 2016

Questions?

52