20
WordPress prestanda Jonas Lejon 2012-10-22

#wpsthlm: WordPress prestanda - av Jonas Lejon

  • Upload
    tdhftw

  • View
    6.454

  • Download
    6

Embed Size (px)

DESCRIPTION

Jonas Lejons session om WordPress-prestanda, som hölls på WordCamp Stockholm den 22 oktober 2012.

Citation preview

Page 1: #wpsthlm: WordPress prestanda - av Jonas Lejon

WordPress prestandaJonas Lejon 2012-10-22

Page 2: #wpsthlm: WordPress prestanda - av Jonas Lejon

Jonas Lejon

• Webb/utveckling sedan 1997– BBS utveckling innan det (PPE till PCBoard)

[ 2 ]

Page 3: #wpsthlm: WordPress prestanda - av Jonas Lejon

Innehåll

• Gäller för dedikerad server/managerad– Alternativt VPS

• Ingen frontend– Sprites– JS-pack etc

• Förlita dig ej på plugins• Brandkårsutryckning

Jonas Lejon [ 3 ]

Page 4: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

Jonas Lejon [ 4 ]

PHP

MySQL

WordPress

Operativsystem

Webbserver

Nätverk

Hårdvara

Page 5: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

• Frontend eller backend?• Vilken av sajterna?

Jonas Lejon [ 5 ]

Page 6: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

• Vänta med uppgradering av hårdvara– Att kasta mer pengar på problemet är fel

Jonas Lejon [ 6 ]

Page 7: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

• Är det verkligen WordPress fel?

Jonas Lejon [ 7 ]

Page 8: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

• Stäng av alla plugins• strace php index.php• php index.php– Går snabbt? Någon annans fel

• Xdebug– apt-get install php5-xdebug– Profiling

Jonas Lejon [ 8 ]

Page 9: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning xdebug

Jonas Lejon [ 9 ]

• Link rel=”prev” i header• Fix: remove_action(”wp_head”, ”adjacent_posts_rel_link_wp_head”, 10, 0);

Page 10: #wpsthlm: WordPress prestanda - av Jonas Lejon

Felsökning

• MySQL – SHOW PROCESSLIST• Titta på fältet “Time”

– EXPLAIN• Loggfiler– Operativsystem– Webbserver/php-fpm

• [WARNING] [pool www] server reached max_children setting (50), consider raising it

Jonas Lejon [ 10 ]

Page 11: #wpsthlm: WordPress prestanda - av Jonas Lejon

Webbservern

• Dags och byta webbserver?– Max öppna filer i Ubuntu

• Apache + Varnish framför– http://blog.doh.ms/2012/10/15/slapping-some-varnish-on-wordpress/

• Nginx + php-fpm– Öka pm.max_children– listen = /tmp/php5-fpm.sock– Se även http://wiki.nginx.org/WordPress

Jonas Lejon [ 11 ]

Page 12: #wpsthlm: WordPress prestanda - av Jonas Lejon

SQL-server

• Slå på loggning av långsamma frågor– long_query_time=2– log-slow-queries=/var/log/mysql/log-slow-

queries.log• Mytop• "MySQL server has gone away“– Längre wait_timeout– Max connections

• Mysqlturner.plJonas Lejon [ 12 ]

Page 13: #wpsthlm: WordPress prestanda - av Jonas Lejon

Opcode cache

• 2-7 ggr bättre prestanda

Jonas Lejon [ 13 ]

Page 14: #wpsthlm: WordPress prestanda - av Jonas Lejon

Opcode cache

• APC, eAccelerator eller Xcache• APC installation– apt-get install php-apc– Verifiera extension=apc.so i apc.ini– apc.shm_size=256M

Jonas Lejon [ 14 ]

Page 15: #wpsthlm: WordPress prestanda - av Jonas Lejon

Memcache

• Key/value fifo lagring i RAM– Undvik diskcache

• Installation– apt-get install memcached – Öka –m från 64mb standard I

/etc/memcached.conf– apt-get install php5-memcache– advanced-cache.php / object-cache.php till wp-

contents

Jonas Lejon [ 15 ]

Page 16: #wpsthlm: WordPress prestanda - av Jonas Lejon

Testa innan

• Apache Bench (ab)– apt-get install apache2-utils– $ ab –n 100 http://utvbloggen.se/

• LoadImpact.com

Jonas Lejon [ 16 ]

Page 17: #wpsthlm: WordPress prestanda - av Jonas Lejon

Övrigt

• Stäng av/ta bort post-revisions– define('WP_POST_REVISIONS', false);– DELETE FROM wp_posts WHERE post_type = "revision";

• MySQL OPTIMIZE TABLE• http://www.mysqlperformanceblog.com/2006/05/17/mysql-server-memory-usage/

• Permalänkstruktur• Följ upp all cachning

Jonas Lejon [ 17 ]

Page 18: #wpsthlm: WordPress prestanda - av Jonas Lejon

Vidare läsning

• HyperDB• Flytta ut funktioner från servrar– Memcache

• http://codex.wordpress.org/High_Traffic_Tips_For_WordPress

• Transients API• HipHop• CDN• Cloudflare

Jonas Lejon [ 18 ]

Page 19: #wpsthlm: WordPress prestanda - av Jonas Lejon

Fusklapp

• Felsök• Släng ut Apache• APC + Objekt cache med memcache• Belastningstesta

Jonas Lejon [ 19 ]

Page 20: #wpsthlm: WordPress prestanda - av Jonas Lejon

Tack

Frågor?

[email protected]

@jonasl

Jonas Lejon [ 20 ]