• No results found

HOW TO MAKE WP FLY...

N/A
N/A
Protected

Academic year: 2021

Share "HOW TO MAKE WP FLY..."

Copied!
63
0
0

Loading.... (view fulltext now)

Full text

(1)

EAST BAY WORDPRESS MEETUP

HOW TO MAKE WP FLY...

(2)

THE ALTERNATIVE TITLE

I could have renamed this presentation

EXPLAINING

THE

SECRETS

BEHIND

MANAGED

HOSTING AND REALLY

(3)

Stefan Didak

http://www.stefandidak.com

(“not a web developer”)

(4)

The

sound

a WordPress site

should make when your client is

happy to pay you more because

their site is

so fast

that it puts

their competition to

shame

.

(5)

LEVELS OF CACHING

all of those make a difference but... NOT ENOUGH

Caching provided by

optimizing

your site

Caching through

plugins

Caching because of

all of the above

(6)

Everything I’m going to show today requires you to have full control and access to your server (VM, VPS, Cloud, etc.)

LEVELS OF CACHING

Don’t just optimize your site

Optimize

YOUR SERVER!

and if you have none, build one!

(7)

WHAT I’LL BE COVERING

Also known as the Tip of the Iceberg

WordPress Caching

Digital Ocean +

DEMO

OpCode Caching

Apache v.s. Nginx

Varnish

(8)

WP CACHING OVERVIEW

(9)

WORDPRESS CACHING

Run-Time Cache

Only lasts the

duration of the request

.

After the request the run-time cache no

longer exists.

For example: the global

$post

and

(10)

WORDPRESS CACHING

Transient Cache

WordPress has a

“Transient Cache”

API

that allows you to store data in

your MySQL DB.

Ahum... Right...

But it can still be useful...

if used selectively

(11)

WORDPRESS CACHING

Object Cache

Is usually

persistent

because it’s stored

“somewhere”.

Somewhere could be in memory through

APC, Memcached, or Redis, but could also

(12)

WORDPRESS CACHING

Page Cache - Stored on disk or in memory

Stores

HTML

data representing entire

pages. This is one of the more typical

caching schemes used by most plugins.

Unfortunately, not so useful when you have

highly dynamic pages

where someone does

not always get the same content (i.e.

(13)

WORDPRESS CACHING

Fragment Cache

I don’t like the term and it is no different

from the

Object Cache

. Instead of storing

entire HTML pages it stores

parts

of pages.

I like to think of it as just another object

(14)

PERSONAL EXPERIENCE

Managed Hosting, however optimized, is still designed to be a version of a “one size fits all” approach

I prefer to have

full control

over my own online servers

because I can have them be

faster

than managed hosting

(15)

GREAT PERFORMANCE & COOL PRICES

GREAT(ER) PERFORMANCE & OK PRICES

NICE PERFORMANCE & CAN GET EXPENSIVE SLOW & EXPENSIVE

(16)

FIRST DEPLOYMENT

It was really exciting to see my first droplet come online

After running and testing my first

“droplet” on Digital Ocean and after

playing with some deployments on

Linode I knew my shared hosting for

30+ domains would come to an end.

A very

WELCOME

END!

(17)

HOSTING, BUT WHERE

The long search has come to an end

If you don’t care much

about the “managed” part

of managed hosting and

really

want things to roar

(18)

STEALTH PROJECT

Not to mention, Digital Ocean has a nice evolving API to manage all your “droplets”. Not as mature as Linode, though!

Once my “stealth project” goes live I

expect that within 2 years I will need

around

150

to

500

virtual servers.

(virtual servers of various capacities)

Digital Ocean has the absolute best

price point

I’ve seen. And I’ve been

looking. Really looking.

(19)

DEMO TIME ! DEMO TIME !

If this doesn’t convince you I don’t know what will

$20/mo

shared hosting

v.s.

$5/mo

Digital Ocean Droplet

Oakley Chamber of Commerce

WordPress site

(20)

TRY IT FOR YOURSELF

anyone with laptops here are encouraged to check it out

http://

oakleychamber.com

(21)

YES YOU CAN

Stop whining about the commandline and typing on the

WAS THAT

FAST

OR WAS THAT

FAST

?

Or is it just cool to know

that you can do it

TOO

!?

(22)

I can’t show you managed

hosting vs. Digital Ocean at

a

$25-30

/month vs.

$5-10

/

month price point...

(23)

I will take

any

bet, for

any

amount of

serious money, that I can setup and

configure servers on Digital Ocean or

Linode that

beat the living daylights

out of any managed hosting in terms

of performance.

And YOU can do it TOO!

So let’s not even talk about

(24)

COPY AND PASTE

If you can’t do copy and paste then I’m wasting your time and I am very sorry. If you can, however... new doors will open!

I know what I’m doing and...

may be biased.

I do, however, believe, that if you put

in some time to learn more than what

you copy & paste will serve you to be

even more valuable to your clients!

(25)

INSTALLING AND RUNNING

On how to install, configure, and run with all the things I

https://www.digitalocean.com/community

TUTORIALS, GUIDES, AND MORE

(26)

OPCODE CACHING

(27)

OPCODE CACHING

Yeah, uh, sure, what what does it DO?!

What your server does for

EVERY

page hit

on your site:

Read most (or all) of your PHP files/code

Interpret each line & “compile” it into what the CPU understands

Execute the “compiled” code and render out the page by sending it to the browser.

(28)

OPCODE CACHING

What your server does for

EVERY

page hit

on your site:

Read most (or all) of your PHP files/code

Interpret each line & “compile” it into what the CPU understands

Execute the “compiled” code and render out the page by sending it to the browser.

Yeah, uh, sure, what what does it DO?!

Execute the “compiled” code and render out the page by sending it to the browser.

What your server does for

EVERY

page hit

(29)

OPCODE CACHING

The simple explanation

PHP PARSE COMPILE EXECUTE SEND

PHP CACHEAPC EXECUTE SEND

WITHOUT OPCODE CACHING

(30)

OPCODE CACHING

Speeds up your site much more than “regular” file/data caching

APC

XCache

eAccelerator

Zend OpCache

NuSphere PHPExpress

IonCube Accelerator

(31)

BUT PHP 5.5 HAS OPCACHE

Performance between APC, XCache, etc. is all very similar

Because

APC

is going to

be included in

“PHP6”

But as we all know, there is no such thing as PHP6, right?

There is

a book

on PHP6.

But there is

no Beta

of PHP6.

(32)

PHP APC

(33)

BENCHMARKING APC

Your site without APC sucks donkey balls

Without APC

Req. Per Sec : 85

Time Per Req. : 900ms

Conc. Time Per Req. : 20ms Xfer Rate : 898 Kbytes/s

With “vanilla” APC

Req. Per Sec : 138.5

Time Per Req. : 476ms

Conc. Time Per Req. : 9.5ms

Xfer Rate : 1265 Kbytes/s

Great, but...

(34)

BENCHMARKING APC

Your site with APC and apc.stat = off WILL FLY!

Without APC

Req. Per Sec : 85

Time Per Req. : 900ms

Conc. Time Per Req. : 20ms Xfer Rate : 898 Kbytes/s

With “vanilla” APC

Req. Per Sec : 138.5

Time Per Req. : 476ms

Conc. Time Per Req. : 9.5ms

Xfer Rate : 1265 Kbytes/s

Now with apc.stat=off

Req. Per Sec : 317.4

Time Per Req. : 152.1ms

Conc. Time Per Req. : 3.1ms

(35)

APC.STAT = OFF

THINK AND PLAN BEFORE YOU TURN IT OFF

Only turn APC.STAT to OFF if:

Your PHP code on the server

does not

change

and you are willing to

restart

the web server if it does.

WP or Plugin

updates

=

CHANGE OF PHP CODE

(36)

RESTARTING? SO WHAT?

There are other ways to deal with this but those are for another time when we get real deep into server stuff

# /etc/init.d/apache2 restart

It’s just one line. Maybe not exactly

the same as this one, though.

(37)

INSTALLING APC

Because it might be different for your flavor of server I’m not

Ensure your server has:

php-pear, php5-dev, make, apache2-prefork-dev

# pecl install apc

Then add the extension to your php.ini (or other)

(38)

CONFIGURING APC

You should tweak it as much as needed

And there’s a lot more you can tweak in APC

apc.enabled=1

apc.shm_segments=1

apc.shm_size=128M (or 1G, etc.)

apc.ttl=3600

apc.user_ttl=7200

apc.gc_ttl=3600

apc.max_file_size=1M

apc.stat=1 (or 0)

(39)

WORTH KNOWING

APC will also extend PHP with new functions

With APC installed you can use PHP

function calls to...

Manage

the APC cache

Interrogate the APC cache

Load/Dump Binary cache data

START OPTIMIZING YOUR CODE

Integrate it selectively in your plugins

(40)

APC WITH A WP PLUGIN

Your mileage may vary

http://wordpress.org/plugins/apc/

APC Object Cache Backend

Place the object-cache.php in your wp-content directory.

Optionally you can also install the

(41)

APACHE V.S. NGINX

Because you might get a lot of visitors... all at the same time!

Apache = Process Based

Nginx = Event Based

(42)

A FEW ADVANTAGES

On sites with light traffic you will not see much difference in performance between event vs. processed based servers

Asynchronous

Asynchronous =

Scalability

Fewer Server Resources

(i.e. much less memory)

(43)

ALSO A COST DIFFERENCE

Part of the cost of virtual servers is the amount of memory that

10.000

concurrent

connections

and Nginx still uses only

a few MB

of

memory

Apache... 100’s of MB’s

(44)

WORDPRESS.COM

Big servers and big sites prefer Nginx... and now you know why

Back in 2008...

8000

live traffic requests per second

Apache would have fallen over

(45)

GAME OVER

Big servers and big sites prefer Nginx... and now you know why

15MB of RAM and

10% of CPU resources

Apache and a pound load balancer

would

freak

out at the 1000th

process, using

400+MB

RAM and

“leaking”

20MB

RAM

per hour

(46)

WORDPRESS & NGINX

Not quite a match made in heaven

You’ll have to do some marriage counseling

WP development is “intertwined”

with the Apache world.

Support is “limited but growing”.

http://codex.wordpress.org/Nginx

http://wiki.nginx.org/WordPress

(47)

WORDPRESS & NGINX

WHERE THE HECK DID MY .HTACCESS FILE GO?!

Nginx has no conceptual notion of

this thing called an

.htaccess

file

http://wordpress.org/plugins/nginx-helper/

(48)

Proxy Servers are not just “the thing you set in your browser”

(49)

VARNISH

And it really is... really really, really, REALLY FAST!

BROWSER SERVERPROXY WEBSITE

VARNISH WEBSITE

BROWSER

With Varnish

YOU

control the caching

(50)

VARNISH

You control the proxy and you control the resources

Cache on Disk

Cache in Memory

Control through

VCL

(51)

VARNISH SAME SERVER

Change the web server port to something else because

APACHE OR NGINX PORT 8080 http://mysite.com:8080 VARNISH PORT 80 http://mysite.com

Varnish points to a “backend” server

which happens to be itself but with

(52)

VARNISH DIFFERENT SERVERS

You can do the setup in whatever way you like

APACHE OR NGINX PORT 8080 http://mysite.com:8080 http://wowy.com:8080 VARNISH PORT 80 http://mysite.com http://somesite.com http://wowy.com

http://admin.com APACHE OR NGINX PORT 8081

http://somesite.com:8081 http://admin.com:8081

(53)

WP AND VARNISH

BEWARE OF COOKIES

# Drop any cookies sent to Wordpress. sub vcl_recv {

! if (!(req.url ~ "wp-(login|admin)")) { ! ! unset req.http.cookie;

! } }

# Drop any cookies Wordpress

# tries to send back to the client. sub vcl_fetch {

! if (!(req.url ~ "wp-(login|admin)")) { ! ! unset beresp.http.set-cookie;

! } }

(54)

MEMCACHED

(55)

AND IT DOES WHAT?

It manages cache and memory... for more than one server

The “for dummies” version:

Make better use of memory

Cache data in memory on

other servers

that aren’t

(56)

DISTRIBUTED, I SAID

(57)

WORDPRESS.COM

Yes, wordpress.com uses memcached. As do Twitter, Flickr,

System interconnects on servers

(depending on how you plan and set

them up) can still get more

performance over TCP/IP and

memory than a local server faced

with only its limited resources.

(58)

MEMCACHED PHP

When installed Memcached will provide you a lot of PHP functionality to have full control over your caching

$mc = new Memcache;

$mc->connect(‘10.0.1.20’, 11211); $data = “cache this!”;

$mc->set(‘mydata’, $data, false, 100); $result = $mc->get(‘mydata’);

(59)

“MEMCACHED PLUGIN”

Your mileage may vary

http://wordpress.org/plugins/batcache/

BATCACHE

Place the advanced-cache.php in your wp-content directory

(60)

LIFE IN THE SLOW LANE

If all this server and site performance is getting to you! :-)

Single Malt Scotch

Hi Stefan! Tequila Hi Kelly! Bourbon Hi Mitch! Beer Hi Andrei!

(61)

DOWNLOAD THE SLIDES

Because this MAY have gone WAY too FAST for you!

http://eastbaywp.com/

(62)

THINGS MENTIONED

In case you want to go look stuff up for yourself

Digital Ocean https://www.digitalocean.com/ Linode https://www.linode.com/ Rackspace http://www.rackspace.com/ Amazon VPC http://aws.amazon.com/vpc/ APC http://php.net/manual/en/book.apc.php XCache http://xcache.lighttpd.net/ eAccelerator http://eaccelerator.net/ Zend OpCache/Optimizer/Platform http://en.wikipedia.org/wiki/Zend_Technologies Nginx http://nginx.org/ Varnish https://www.varnish-cache.org/ Redis http://redis.io/ Memcached http://memcached.org/ WordPress Batcache http://wordpress.org/plugins/batcache/ WordPress APC Object Backend http://wordpress.org/plugins/apc/ And finally, a “real developer’s” home office because everyone keeps asking... :-) http://www.stefandidak.com/office/ http://www.flickr.com/photos/didak/sets/72157633152434208/ http://www.flickr.com/photos/didak/sets/72157632343719954/ http://www.flickr.com/photos/didak/sets/72157632244753177/

(63)

QUESTIONS

References

Related documents

80 TOP SELENIUM webdriver interview Questions for 5 years experience

fluticasone propionate nasal spray review high off allergy nasal spray fluticasone triamcinolone vs flonase nasal spray price in india gsmarena fluticasone nasal spray

Would like to enable the schedule yet poignant look at drastically cheaper prices ever primetime shows you can also share information?. Tv schedule for an office memo and how your

Want to select aaa com insurance really covers can access your home insurance more reasons to select coverages, insurance coverage and are a treasure.. Milestone that go www

No paid reviews Get concrete on Denny's real problems Customer service an support information File a complaint at ComplaintsBoardcom.. If you're 55 or church save some success

If you're experiencing a especially challenging time, or there's an area of your life that's stimulating a high level of fear, concern or anxiety, or other negative feelings

WORKOUT, not per exercise. 2) Limit the amount of time spent in the gym – Each workout should not last for any more than 1 hour. This time frame comes into play beginning with

Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions. Start