333101532-WordPress-Performance-Tuning.pdf

JavierArturoRodrigue1 13 views 91 slides Aug 28, 2024
Slide 1
Slide 1 of 91
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89
Slide 90
90
Slide 91
91

About This Presentation

WordPress Performance Tuning


Slide Content

puerto:22
WORDPRESS
PERFORMANCE TUNING
Javier Arturo Rodríguez
@codehead
[email protected]

puerto:22
ABOUT ME
•Certified System Administrator
•Certified Software Architect
•WordPress enthusiast
•CTO at puerto22.com
@codehead [email protected]

puerto:22
PERFORMANCE TUNING

puerto:22
TRADEOFFS

puerto:22
DIMENSIONS OF
PERFORMANCE

puerto:22
Easy
Fast
Inexpensive

puerto:22
Easy
Fast
Inexpensive

puerto:22
Easy
Fast
Inexpensive

puerto:22
Easy
Fast
Inexpensive

puerto:22
PICK ANY TWO
Easy
Fast
Inexpensive

puerto:22
MEASURE

puerto:22
OPTIMIZATION
! "
#
Measure Analyze
Change

puerto:22
OPTIMIZATION
! "
#
Measure
Pick a metric

puerto:22
OPTIMIZATION
! "
#
Analyze
Advance an
hypothesis
Plan a course
of action

puerto:22
OPTIMIZATION
! "
#
ChangeAct!

puerto:22
OPTIMIZATION
! "
#
Measure
Get a new
measurement
of the same
metric

puerto:22
OPTIMIZATION
! "
#
Measure Analyze
Change

puerto:22
CLIENT VS SERVER
$
! !

puerto:22
CLIENT VS SERVER
$
! !
!
! !
!

Time To First Byte

puerto:22
METRICS!
•Client: Load time
•Developer Tools, Yslow, PageSpeed, Pingdom
•Server: Requests per second
•ApacheBench, siege, httperf

puerto:22
APACHEBENCH
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking demo2.demoinc.com (be patient).....done
Server Software: Apache
Server Hostname: demo2.demoinc.com
Server Port: 80
Document Path: /
Document Length: 10884 bytes
Concurrency Level: 10
Time taken for tests: 15.467 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 1114376 bytes
HTML transferred: 1088400 bytes
Requests per second: 6.47 [#/sec] (mean)
Time per request: 1546.727 [ms] (mean)
Time per request: 154.673 [ms] (mean, across all concurrent requests)
Transfer rate: 70.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 54 67 20.9 60 196
Processing: 555 1430 280.4 1466 1808
Waiting: 439 1314 267.0 1369 1644
Total: 615 1497 277.6 1528 1871
Percentage of the requests served within a certain time (ms)
50% 1528
66% 1621
75% 1680
80% 1736
90% 1796
95% 1843
98% 1871
99% 1871
100% 1871 (longest request)

puerto:22
SIEGE
** SIEGE 3.0.8
** Preparing 20 concurrent users for battle.
The server is now under siege.. done.
Transactions: 2000 hits
Availability: 100.00 %
Elapsed time: 59.53 secs
Data transferred: 6.73 MB
Response time: 0.01 secs
Transaction rate: 33.60 trans/sec
Throughput: 0.11 MB/sec
Concurrency: 0.19
Successful transactions: 2000
Failed transactions: 0
Longest transaction: 0.04
Shortest transaction: 0.00

puerto:22
HTTPERF
httperf --hog --timeout=5 --client=0/1 --server=demo2.demoinc .com --port=80 --uri=/
--rate=10 --send-buffer=4096 --recv-buffer=16384 --num-conns=100 --num-calls=1
httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to
FD_SETSIZE
Maximum connect burst length: 1
Total: connections 100 requests 100 replies 100 test-duration 9.903 s
Connection rate: 10.1 conn/s (99.0 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 2.2 avg 2.8 max 6.8 median 2.5 stddev 0.6
Connection time [ms]: connect 0.7
Connection length [replies/conn]: 1.000
Request rate: 10.1 req/s (99.0 ms/req)
Request size [B]: 77.0
Reply rate [replies/s]: min 10.0 avg 10.0 max 10.0 stddev 0.0 (1 samples)
Reply time [ms]: response 1.8 transfer 0.3
Reply size [B]: header 266.0 content 10884.0 footer 0.0 (total 11150.0)
Reply status: 1xx=0 2xx=100 3xx=0 4xx=0 5xx=0
CPU time [s]: user 3.54 system 6.27 (user 35.7% system 63.3% total 99.1%)
Net I/O: 110.7 KB/s (0.9*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

puerto:22
ASIDE: LOG
51.15.54.100 - - 

[02/Dec/2016:11:45:27 +0000] "GET / HTTP/1.1" 200 5076 "-" 

"Mozilla/5.0 (pc-x86_64-linux-gnu)" "-" "D=11724"

puerto:22
SPEED AND EFFICIENCY
•speed: swiftness or rate of performance or action: velocity
•efficiency: productivity without waste
https://www.merriam-webster.com/

puerto:22
AREAS OF OPPORTUNITY
•Number of Plugins
•Number/size of Assets
•Database Queries
•API Calls

https://premium.wpmudev.org/blog/essential-wordpress-plugins/

puerto:22
PLUGINS
•Profile
•Delete unused plugins
•Eliminate redundancy
•When in doubt, delete

puerto:22
PROFILE!

puerto:22
P³ (PLUGIN PERFORMANCE PROFILER)

puerto:22
XCACHE + CACHEGRIND

puerto:22
ASSETS
•Concatenate
•Minify
•Compress
•Make cache-friendly
•Offload

puerto:22

puerto:22

puerto:22
DATABASE
•Offload
•Index
•Cache
•Objects
•Queries

puerto:22
API CALLS
•Theme optimization
•Opcode Caching

puerto:22
APPROXIMATE
STATIC-PAGE SERVING

puerto:22
DON’T RE-GENERATE
WHAT YOU CAN CACHE

puerto:22
CACHING
•varnish
•memcached/redis
•WP Super Cache
•W3 Total Cache

puerto:22
CACHING
•Improved serving time
•Less server load

puerto:22
CACHING
WP
Database

puerto:22
CACHING
WP
Database
varnish

puerto:22
CACHING
WP
Database
memcached
redis

puerto:22
W3 Total Cache
CACHING
WP
Database

puerto:22
W3 TOTAL CACHE
•Disk caching
•Database caching
•Object caching
•CDN

puerto:22
DON’T SERVE ASSETS THAT
OTHERS ARE WILLING TO
SERVE FOR YOU

puerto:22
OFFLOADING
•Content Distribution Networks
•Edge Serving
•Edge Caching

puerto:22
WP

puerto:22
IMG
IMG
IMG
IMG
IMG
WP

puerto:22
IMG
IMG
IMG
IMG
IMG
WP

puerto:22
WP
WP
WP
WP
WP
WP

puerto:22
OFFLOADING
•Overcome single-host bottleneck
•Less server load
•Less bandwidth usage

puerto:22
OFFLOADING
HTML
CSS
JS
WOF
IMG

puerto:22
OFFLOADING
HTML
CSS
JS
WOF
IMG

puerto:22
OFFLOADING
HTML
CSS
JS
WOF
IMG

puerto:22
SCALING

puerto:22
SCALING STRATEGIES
•Database spin-off
•Scale Vertically
•Scale Horizontally

puerto:22
DATABASE SPIN-OFF
WP
Database

puerto:22
DATABASE SPIN-OFF
WP Database

puerto:22
SCALE VERTICALLY

puerto:22
SCALE VERTICALLY

puerto:22
SCALE HORIZONTALLY

puerto:22
SCALE HORIZONTALLY

puerto:22
SCALE HORIZONTALLY
WP WP WPWP

puerto:22
SCALE HORIZONTALLY
WP WP WPWP
Database

puerto:22
LOAD BALANCING
WP WP WPWP
Load Balancer
Database

puerto:22
LOAD BALANCING
WP WP WPWP
Load Balancer
Database

puerto:22
ELASTICITY
WP WP
Load Balancer
Database

puerto:22
ELASTICITY
WP WPWP
Load Balancer
Database

puerto:22
ELASTICITY
WP WP WPWP
Load Balancer
Database

puerto:22
FRONT-END CACHING
WP WP WPWP
Cache Cache
Load Balancer
Database

puerto:22
DATABASE
•Cache
•Index
•Spin off
•Replication
•Partitioning
Check your slow_queries log!

puerto:22
REPLICATION
WP WP WPWP
Load Balancer
Master Replica

puerto:22
Partition B
PARTITIONING
WP WP WPWP
Load Balancer
Partition A

puerto:22
Partition B
PARTITIONING
WP WP WPWP
Load Balancer
Partition A

puerto:22
DATABASE
•HyperDB

puerto:22
SERVER STACK
Operating System
Web Server
PHP RE
WordPress
Theme Plugins
Hardware
Database

puerto:22
SERVER STACK
Operating System
Web Server
PHP RE
WordPress
Theme Plugins
Hardware
Database
SSD, IOPS
Scaling
Cache
Index
Spinoff
Replication
Partitioning
APC
Xcache
varnish
W3 Total Cache
HyperDB
Networking
Resource allocation

puerto:22
DEFAULT STACK
Operating System
Web Server
PHP RE
WordPress
Theme Plugins
Hardware
DatabaseApache
Zend
mod_php

puerto:22
ALTERNATE STACK
Operating System
Web Server
PHP RE
WordPress
Theme Plugins
Hardware
Databasenginx
HHVM
fastcgi

puerto:22
SEE ALSO
•WordPress Optimization

https://codex.wordpress.org/WordPress_Optimization

puerto:22
SUMMARY
•Performance Tuning is a process, not a product.
•Measure. Profile.
•Optimize your WordPress installation prior to scaling.
•Look at the big picture.
•Leverage Caching and Content Delivery Networks.

puerto:22
Q&A

puerto:22
THANK YOU!
Javier Arturo Rodríguez
@codehead
http://scribd.com/javierrgz/