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
WordPress prestandaJonas Lejon 2012-10-22
Jonas Lejon
• Webb/utveckling sedan 1997– BBS utveckling innan det (PPE till PCBoard)
[ 2 ]
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 ]
Felsökning
Jonas Lejon [ 4 ]
PHP
MySQL
WordPress
Operativsystem
Webbserver
Nätverk
Hårdvara
Felsökning
• Frontend eller backend?• Vilken av sajterna?
Jonas Lejon [ 5 ]
Felsökning
• Vänta med uppgradering av hårdvara– Att kasta mer pengar på problemet är fel
Jonas Lejon [ 6 ]
Felsökning
• Är det verkligen WordPress fel?
Jonas Lejon [ 7 ]
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 ]
Felsökning xdebug
Jonas Lejon [ 9 ]
• Link rel=”prev” i header• Fix: remove_action(”wp_head”, ”adjacent_posts_rel_link_wp_head”, 10, 0);
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 ]
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 ]
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 ]
Opcode cache
• 2-7 ggr bättre prestanda
Jonas Lejon [ 13 ]
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 ]
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 ]
Testa innan
• Apache Bench (ab)– apt-get install apache2-utils– $ ab –n 100 http://utvbloggen.se/
• LoadImpact.com
Jonas Lejon [ 16 ]
Ö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 ]
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 ]
Fusklapp
• Felsök• Släng ut Apache• APC + Objekt cache med memcache• Belastningstesta
Jonas Lejon [ 19 ]