2. Quick Overview
● Drupal as CMS, CMF
● What this meetup is about
○ Bird's eye vs detailed?
○ Best practices
○ Measurement tools
● Open discussion, share & interrupt anytime
5. IA / Site Building
● might affect performance, but no studies
● 3rd party webservices
● taxonomy (indexed) vs list fields (text)?
● contrib module selection
○ domain_taxonomy, term_reference_tree
○ how to choose?
● coding best practices in custom modules (use
hook instead of core/contrib hacks, making
use of proper caching: drupal_static, ctools
caching, proper theming)
● target users: anon vs authenticated
6. Easy Peasy Lemon Squeezy!
● optimize / compress files locally (images)
● aggregate CSS & JS
● enable page cache & block cache
● disable unnecessary modules (unused or
heavy UI: views_ui, ds_ui)
● syslog—or no log—instead of dblog
● boost (access to .htaccess, or vhosts file)
● storage_api, CDN
7. Apache Configurations
● Enable mod_expires, mod_deflate
● Move directives from .htaccess to host
configuration and set AllowOverride None
● Set timeout from 300 to 30
● Set StartServers, MinSpareServers,
MaxSpareServers, MaxClients and
MaxRequestsPerChild values
● Disable unused modules ie. mod_cgi,
mod_ldap
8. MySQL Configurations
● Set in my.cnf
○ query_cache_type = 1
○ query_cache_size = 128M
○ query_cache_limit = 2M
● Review with: show status like 'Qcache_%';
○ Qcache_hits - bigger is better
○ Qcache_lowmem_prunes - smaller is better
● Run mysqltuner.pl
9. Additional Services/Modules
● Always use OpCode caching - APC
● Reverse Proxy - Varnish, Squid, Nginx
● Cache storage - Memcache, Redis, Filecache
● NoSQL DB - MongoDB
● Offload searching to Apache Solr
● Substitute Apache for Nginx
14. Q&A
This presentation is collaborative work of:
● Arra'di Nur Rizal
(arra'di.nur.rizal@wunderkraut.com)
● Joe Chin
(joe@techknowjoe.com)
● SJ
(sj@pixelonion.com)