Slide 1

Slide 1 text

towards a Drupal performance benchmark Beat the Devil

Slide 2

Slide 2 text

http://drupal.org/user/770300 @rodricels http://drupal.org/user/8859 @perusio http://drupal.org/user/39078 @NITEMAN_es

Slide 3

Slide 3 text

We'll kill a lot of sacred cows

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

the murder weapon will be Occam's razor

Slide 6

Slide 6 text

which amounts to the principle of least effort

Slide 7

Slide 7 text

laziness is good

Slide 8

Slide 8 text

hopefully in the end you'll be puzzled

Slide 9

Slide 9 text

good things happen to puzzled people who obsess

Slide 10

Slide 10 text

simplest laziest easiest

Slide 11

Slide 11 text

performance is for everyone

Slide 12

Slide 12 text

do you have performance issues?

Slide 13

Slide 13 text

system thinking http://www.flickr.com/photos/irisheyes/148134965/sizes/o/in/photostream/

Slide 14

Slide 14 text

mathematics is for everyone

Slide 15

Slide 15 text

request per second vs seconds per request

Slide 16

Slide 16 text

MTTR Mean Time To Recovery vs MTBF Mean Time Between Failure

Slide 17

Slide 17 text

do you monitor live system performance?

Slide 18

Slide 18 text

live monitoring tools Munin Cacti

Slide 19

Slide 19 text

drupal accesslog table has tons of useful data

Slide 20

Slide 20 text

beware the logs logstash / graylog aggregate them

Slide 21

Slide 21 text

economics costs per request/volume/peek operational costs Return On Investment

Slide 22

Slide 22 text

we're talking about $peed $peed = cost_effective_performance

Slide 23

Slide 23 text

slowness downtime operations costs you money

Slide 24

Slide 24 text

it's not the tools you have it's the use you make of them

Slide 25

Slide 25 text

have you benchmarked your Drupal?

Slide 26

Slide 26 text

complex is easy and fragile simple is hard and resilient Keep It Simple Stupid

Slide 27

Slide 27 text

Know your stack Know your targets Monitor your performance

Slide 28

Slide 28 text

find where the problems are don't fix things that aren't broken the worse the first one change a time & keep a log of your actions

Slide 29

Slide 29 text

dissecting frontend vs backend backend static vs dynamic dynamic processing vs data gather

Slide 30

Slide 30 text

beyond development & operations good developers are those that take all aspects in consideration

Slide 31

Slide 31 text

keep everything as close as possible to production test systems

Slide 32

Slide 32 text

take advantage of configuration management to reproduce your live infrastructure test systems

Slide 33

Slide 33 text

some software has its performance directly tied to the number of cores and/or the amount of RAM test systems

Slide 34

Slide 34 text

sacred cow of frontend CDN (expiration logic) cloud servers

Slide 35

Slide 35 text

number of req. / parallelization blocking events data side: DNS resolution data side: download time data side: size / weight order matters frontend vs backend

Slide 36

Slide 36 text

frontend vs backend tools Firebug Chrome tools Google Speed Tracer Yslow Web services [*] [*] [*] [*]

Slide 37

Slide 37 text

sacred cow of backend load balancing: how? failover strategy? more webheads: cache consistency? another server: what for?

Slide 38

Slide 38 text

anonymous vs registered cacheable vs non cacheable backend: static vs dynamic

Slide 39

Slide 39 text

ab Jmeter Httperf wrk Gatling TCP copy HTTP benchmarking tools

Slide 40

Slide 40 text

sacred cow of PHP HipHop (hacked libs) PHP Extensions (C / PECL)

Slide 41

Slide 41 text

sacred cow of PHP APC Tuning profile, profile, profile and profile upgrading PHP version (if you're brave)

Slide 42

Slide 42 text

locks difficult to dissect devel dynamic processing vs data gather

Slide 43

Slide 43 text

benchmarking / profiling PHP Xdebug Webgrind Xhprof don't even try without an opcode cache & remember the hard disk

Slide 44

Slide 44 text

sacred cow of databases NoSQL denormalization sharding http://www.flickr.com/photos/rebeccaselah/3942904359/sizes/l/in/photostream/

Slide 45

Slide 45 text

sacred cow of databases NoSQL => helps with writes denormalization => helps with HUGE DBs sharding => helps with Big DBs

Slide 46

Slide 46 text

https://tools.percona.com/ Percona toolkit [*] (formerly maat-kit) tcpdump + Percona toolkit Logs are vital! Every engine has strongs & weakness Better on bare metal! MySQL Tune & Benchmarking tools

Slide 47

Slide 47 text

root hardware causes network & DNS play a role static content depends mainly on I/O dynamic content (php) depends on CPU database server mainly depends on RAM

Slide 48

Slide 48 text

Drupal known issues (DB): Watchdog, sessions, accesslog... history... Please do stress, load & stability tests regularly in your live system extra balls:

Slide 49

Slide 49 text

This is our way, what is yours? (no cows were harmed in the making of this presentation)

Slide 50

Slide 50 text

¿Questions? Pablo Picasso [speaking of computers]: "But they are useless. They can only give you answers."

Slide 51

Slide 51 text

No content