SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Speed up your data caches with Heisencache
Frédéric G. Marand
3/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS
IMPLEMENTATION
MEASURING
CONTEXT
4/59 | heisencache-15D17 | © OSInet
Frederic MARAND
Perception
●
Front-end dominates
●
Downloads start after the page is served
●
Not all sites are equal when it comes to the
back/front performance ratio
CONTEXT
5/59 | heisencache-15D17 | © OSInet
Frederic MARANDwww.webpagetest.org
Major press site example:
●
simple content
●
below 500 msec backend
●
tons of extras on page
●
result: 23 sec front-end time
●
+/- 50 * backend time
Front-endCONTEXT
6/59 | heisencache-15D17 | © OSInet
Frederic MARAND
www.webpagetest.org
Major Drupal Commerce site
example:
●
complex backend logic
●
optimized front-end
●
+/- 4 * backend time
●
backend impact = 25%
Back-endCONTEXT
7/59 | heisencache-15D17 | © OSInet
Frederic MARAND
●
Level 1: page caching
●
Opcode cache
●
Varnish, CDN
●
Level 2: storage tuning
●
MySQL slow queries
●
MongoDB, Redis, ...
●
Level 3: cache tuning
●
On we go...
CC BY­NC­ND 2.0 najbo/Flickr
Battle planCONTEXT
8/59 | heisencache-15D17 | © OSInet
Frederic MARAND
CONTEXT
LESS DB QUERIES MEANS
DATA CACHING
Drupal needs caching
Cache is a good thing
«Cache is king»
Steve Souders, author of High-Performance web sites
http://fr.slideshare.net/souders/cache-is-king
9/59 | heisencache-15D17 | © OSInet
Frederic MARAND
Photo by Alan Light
Too much of a
good thing is
WONDERFUL
10/59 | heisencache-15D17 | © OSInet
Frederic MARAND
(Not that kind of good thing)
CONTEXT
11/59 | heisencache-15D17 | © OSInet
Frederic MARAND
CONTEXT
CACHING CAN BE BAD
●
Memcached speed +/- like good MySQL
●
Can be worse: clustering network issues
●
A miss costs more than uncached work
12/59 | heisencache-15D17 | © OSInet
Frederic MARAND
CONTEXT
HOW DO YOU
KNOW WHEN
YOU'VE HAD
ENOUGH?
MEASURE!
CC BY­NC­ND 3.0 http://saintgasoline.com
14/59 | heisencache-15D17 | © OSInet
Frederic MARAND
Introducing HEISENCACHE
8.x
com
ing
15/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS
IMPLEMENTATION
MEASURING
CONTEXT
16/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING
WHY HEISENCACHE?
CC BY 3.0 Gerhard Hund
17/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING
●
Reduce uncertainty
●
Minimize observer impact
●
Don't push the analogy too far
18/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING
THE COST OF MEASUREMENT
●
Observer code runs within Drupal
●
Needs to be invoked → more CPU
●
Needs to store data → more I/O
19/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING
CACHING BEHAVIOUR
vs.
LOAD PROFILE
20/59 | heisencache-15D17 | © OSInet
Frederic MARAND
● Instant peaks for top content
● Fast decay
● TTL works wonders
● Long tail issues
MEASURING: Sports site
CC BY 2.0 Ronnie Macdonald
21/59 | heisencache-15D17 | © OSInet
Frederic MARAND
● Many content pieces
● Few repeat hits
● Complex cache policy
● Avoid caching some data
● Preserve cache memory
for selected content
MEASURING: Regional TV
22/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING
OBSERVE CACHE IN
PRODUCTION
23/59 | heisencache-15D17 | © OSInet
Frederic MARAND
MEASURING in production
●
Precision vs. velocity?
●
Performance module
●
Cannot write to the DB in real-time
●
Cached pages
●
Observing Drupal bootstrap
24/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS
IMPLEMENTATION
MEASURING
CONTEXT
25/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: early hits
DRUPAL 7 BOOT SEQUENCE
● Page cycle: index.php drupal_bootstrap→
– Phases: Configuration, Page Cache, DB, Variables,
Session, Page Header, Language, Full
– Cache handlers declaration: settings.php
– Exotic early hits : sites.php, settings.php,
drupal_settings_initialize()
– Common early hits : _drupal_bootstrap_page_cache
●
Need to work before DB and module system
29/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: early hits
SOLUTION
D7 : Use a standalone event system
D8 : Use the SF2 EventDispatcher
30/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: operation
IDEAS ●
Doctrine, NodeJS and Symfony
event systems
●
Use dependency injection, but
no DIC (on D7)
●
Use the standard DIC and
event system (on D8)
31/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: operation
BONUS ●
D7 : Composer for deployment
– Before hooks, so no
composer_manager
●
D8 : normal service, easy to
build
●
Easy unit testing → decent
code coverage
32/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: coverage
33/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION
cache (factory, backend) driver
DECORATOR PATTERN
●
Original Inspiration: authcache
●
Read existing cache configuration
●
D7 : wrap settings, claim to be the sole cache provider
●
D8 : decorate CacheFactory, CacheBackends
●
Handle requests per the original configuration, but
enhance the service
34/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION:
events
EMIT EVENTS AROUND ALL OPERATIONS
●
Configuration
●
Initialization
●
Cache operations
●
…and page termination
35/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: late hits
CATCHING LATE HITS 1/2
●
D7 hook_exit ? Lots of code after that
@see drupal_page_footer()
●
D7 Catching page caching ?
– not triggered on AJAX callbacks
@see ajax_deliver()
– poormancron can run lots of code after
that
36/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: late hits
CATCHING LATE HITS 2/2
●
D7/D8 Catching the session commit?
– Only if a session was started
– Dirty interactions
– Session regeneration
●
D8 : kernel.terminate, kernel.response ?
●
=> Shutdown function stack
37/59 | heisencache-15D17 | © OSInet
Frederic MARAND
NEEDS ●
minimize I/O load
→ aim for #writes <= 1
●
«Fingers crossed»-inspired strategy
– Keep data in memory during the
page lifecycle
– Write it at end of page
IMPLEMENTATION:
storing data
38/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION:
storing data
CHALLENGES ●
Writing after the last possible
cache operation
●
Write while classes are still
available
●
D7 : Passing information
within an event-oriented
procedural code base
39/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: D7 events
EventEmitter (à la Node)
●
narrowcast events created by sources
●
subscribers add/remove events on the
fly
– can further tighten narrowcasting
40/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: D7 events
EventSubscriberInterface
●
Doctrine/Symfony
●
+ (add | remove)Event()
EventSourceInterface
●
Define events a source can emit
●
Base source of events: Cache API
41/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: events
D7/D8 SYNTHETIC EVENTS
●
API Limitations: post-operation cache
events do not get the operation settings
●
Enable immediate event reconciliation
●
Event susbcribers can also be sources
42/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: events
D7/D8 SYNTHETIC EVENT EXAMPLES
●
MissSubscriber: miss info for Cache::get()
●
PerformanceSubscriber: timing info for all
ops
●
WriteSubscriber: single event for write and
delete ops
44/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: setup
settings.heisencache.inc
D7 CONFIGURATION
●
Retrieve the EventEmitter from Config instance
●
Create EventSubscriber instances as chosen
●
Register them on chosen events
●
DebugSubscriber listen to all events
– not in production !
●
Don't forget to include a WriterSubscriber
●
D8 : customize development.services.yml
45/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: extending
HEISENCACHE IS A CODER TOOL
46/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: extending
EASY TO EXTEND :
●
Write additional EventSubscriber classes
●
Add them to your configuration
ALREADY EXTENDED :
●
WriterSubscriber (France Télévisions)
●
CacheReadLogWriterSubscriber (AmazeeLabs)
●
Alternate loader (AmazeeLabs)
47/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: extending
MOST TYPICAL
●
Create new subscriber for custom conditions
●
Create new writer classes
●
Target alternate stores for speed and ease
●
MongoDB
●
K/V or data structure store (Redis)
●
Message queue (Beanstalkd, RabbitMQ,
ZeroMQ, etc)
50/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: UI
●
ROLL YOUR OWN!
● Use WatchdogSubscriber data
●
Use admin/reports/dblog or rework it
●
Views integration
● Use the SqlWriterSubscriber data
●
Two default views provided (Sql, Watchdog)
●
Symfony WebProfiler toolbar
●
Replace/complement existing cache report
51/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: UI
●
Data collecting: raw data, big volume
●
Three-step data processing
‒
Collect → Heisencache
‒
Cook → Process data based on your needs
‒
Consumer → Visualize processed data
●
Sweet spot
‒
Use a queue (Beanstalkd, etc) instead of cron
‒
Time-series database for longitudinal analysis :
RRD, InfluxDB, OpenTSDB ...
52/59 | heisencache-15D17 | © OSInet
Frederic MARAND
IMPLEMENTATION: UI
Comparing with network analysis
●
Heisencache is like
‒
libpcap / tcpdump / iptrace / snoop ...
●
Someone has to design a Wireshark on top of it
53/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS
IMPLEMENTATION
MEASURING
CONTEXT
54/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS: instant data
TYPICAL USEFUL INSTANT RESULTS
●
Repeated misses
– Usual suspects: default Memcached and big writes
(prod)
– Rewriting a variable on most pages (dev)
●
Many calls to same key
– Usual suspect: missing or broken static cache
●
Many calls to related keys
– Usual suspect: code loop instead of cache multiple
55/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS: longitudinal analysis
TYPICAL USEFUL TIME-SERIES RESULTS
●
Size of known-to-be-growing keys. Usual suspects:
– Translation cache → Someone left a t($foo) somewhere
– Context cache → Contexts are piled instead of refactored
– Views plugins → Hard Views problem. Partial fix only.
●
Miss rate shooting up from baseline on a bin
– Call for instant analysis on that bin: likely a code regression
●
Response time shooting up on a normally stable key
– Network/server problem, bin saturation
– Call for instant analysis on the cache instance
56/59 | heisencache-15D17 | © OSInet
Frederic MARAND
RESULTS : beyond debugging
●
Storing cache hit patterns for cache
warming
●
Pre-warm cache on keys selected with a
Heisencache WriterSubscriber
●
Exemple with the AmazeeLabs fork :
https://github.com/AmazeeLabs/heisencache
58/59 | heisencache-15D17 | © OSInet
Frederic MARAND
Drupal 8?
WHEN?
●
When bigger sites start to deploy D8
●
…and need them to go faster :-)
●
First steps already available :
●
https://github.com/FGM/heisencache
59/59 | heisencache-15D17 | © OSInet
Frederic MARAND
Drupal, faster
http://www.osinet.fr/

Contenu connexe

Similaire à Cache speedup with Heisencache for Drupal 7 and Drupal 8

What's New in OpenLDAP
What's New in OpenLDAPWhat's New in OpenLDAP
What's New in OpenLDAPLDAPCon
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fastDenis Karpenko
 
200860 installing an enterprise environment
200860 installing an enterprise environment200860 installing an enterprise environment
200860 installing an enterprise environmentp6academy
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magentoMathew Beane
 
SUTOL 2015 - A Performance Boost for your IBM Notes Client
SUTOL 2015 - A Performance Boost for your IBM Notes ClientSUTOL 2015 - A Performance Boost for your IBM Notes Client
SUTOL 2015 - A Performance Boost for your IBM Notes ClientChristoph Adler
 
Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Martin Anderson-Clutz
 
Headless Magento - Meet Magento Poland 2017
Headless Magento - Meet Magento Poland 2017Headless Magento - Meet Magento Poland 2017
Headless Magento - Meet Magento Poland 2017Sander Mangel
 
Automation of Hadoop cluster operations in Arm Treasure Data
Automation of Hadoop cluster operations in Arm Treasure DataAutomation of Hadoop cluster operations in Arm Treasure Data
Automation of Hadoop cluster operations in Arm Treasure DataYan Wang
 
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....Denis Gundarev
 
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"Dakiry
 
Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationRadek Baczynski
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...OW2
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDoku
 
NetFlow Data processing using Hadoop and Vertica
NetFlow Data processing using Hadoop and VerticaNetFlow Data processing using Hadoop and Vertica
NetFlow Data processing using Hadoop and VerticaJosef Niedermeier
 
OSMC 2018 | Why we recommend PMM to our clients by Matthias Crauwels
OSMC 2018 | Why we recommend PMM to our clients by Matthias CrauwelsOSMC 2018 | Why we recommend PMM to our clients by Matthias Crauwels
OSMC 2018 | Why we recommend PMM to our clients by Matthias CrauwelsNETWAYS
 
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-ReloadedRNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloadedpanagenda
 
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-ReloadedRNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-ReloadedChristoph Adler
 

Similaire à Cache speedup with Heisencache for Drupal 7 and Drupal 8 (20)

What's New in OpenLDAP
What's New in OpenLDAPWhat's New in OpenLDAP
What's New in OpenLDAP
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
 
200860 installing an enterprise environment
200860 installing an enterprise environment200860 installing an enterprise environment
200860 installing an enterprise environment
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magento
 
OpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCmsOpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCms
 
SUTOL 2015 - A Performance Boost for your IBM Notes Client
SUTOL 2015 - A Performance Boost for your IBM Notes ClientSUTOL 2015 - A Performance Boost for your IBM Notes Client
SUTOL 2015 - A Performance Boost for your IBM Notes Client
 
Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021
 
Headless Magento - Meet Magento Poland 2017
Headless Magento - Meet Magento Poland 2017Headless Magento - Meet Magento Poland 2017
Headless Magento - Meet Magento Poland 2017
 
Automation of Hadoop cluster operations in Arm Treasure Data
Automation of Hadoop cluster operations in Arm Treasure DataAutomation of Hadoop cluster operations in Arm Treasure Data
Automation of Hadoop cluster operations in Arm Treasure Data
 
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....
How to hack Citrix (So, You Just Inherited Someone Else's Citrix Environment....
 
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"
ROMA NOVIKOV, BAQ, "Prometheus + grafana based monitoring"
 
Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimization
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winner
 
DNSTap Webinar
DNSTap WebinarDNSTap Webinar
DNSTap Webinar
 
NetFlow Data processing using Hadoop and Vertica
NetFlow Data processing using Hadoop and VerticaNetFlow Data processing using Hadoop and Vertica
NetFlow Data processing using Hadoop and Vertica
 
OSMC 2018 | Why we recommend PMM to our clients by Matthias Crauwels
OSMC 2018 | Why we recommend PMM to our clients by Matthias CrauwelsOSMC 2018 | Why we recommend PMM to our clients by Matthias Crauwels
OSMC 2018 | Why we recommend PMM to our clients by Matthias Crauwels
 
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-ReloadedRNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
RNUG 2020: HCL Notes 11.0.1 FP2 - Performance Boost Re-Reloaded
 
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-ReloadedRNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
RNUG - HCL Notes 11.0.1 FP2 — Performance Boost Re-Reloaded
 
R12.2 dba
R12.2 dbaR12.2 dba
R12.2 dba
 

Plus de OSInet

Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewOSInet
 
Scaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLScaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLOSInet
 
Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?OSInet
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue APIOSInet
 
Life after the hack
Life after the hackLife after the hack
Life after the hackOSInet
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performanceOSInet
 
Drupal 8 : regards croisés
Drupal 8 : regards croisésDrupal 8 : regards croisés
Drupal 8 : regards croisésOSInet
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7OSInet
 
Le groupe PHP-FIG et les standards PSR
Le groupe  PHP-FIG et les standards PSRLe groupe  PHP-FIG et les standards PSR
Le groupe PHP-FIG et les standards PSROSInet
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8OSInet
 
Utiliser drupal
Utiliser drupalUtiliser drupal
Utiliser drupalOSInet
 
Equipe drupal
Equipe drupalEquipe drupal
Equipe drupalOSInet
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?OSInet
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 
Drupal Views development
Drupal Views developmentDrupal Views development
Drupal Views developmentOSInet
 

Plus de OSInet (15)

Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TView
 
Scaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQLScaling up and accelerating Drupal 8 with NoSQL
Scaling up and accelerating Drupal 8 with NoSQL
 
Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?Mon site web est hacké ! Que faire ?
Mon site web est hacké ! Que faire ?
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue API
 
Life after the hack
Life after the hackLife after the hack
Life after the hack
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performance
 
Drupal 8 : regards croisés
Drupal 8 : regards croisésDrupal 8 : regards croisés
Drupal 8 : regards croisés
 
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
 
Le groupe PHP-FIG et les standards PSR
Le groupe  PHP-FIG et les standards PSRLe groupe  PHP-FIG et les standards PSR
Le groupe PHP-FIG et les standards PSR
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8
 
Utiliser drupal
Utiliser drupalUtiliser drupal
Utiliser drupal
 
Equipe drupal
Equipe drupalEquipe drupal
Equipe drupal
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 
Drupal Views development
Drupal Views developmentDrupal Views development
Drupal Views development
 

Dernier

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 

Dernier (20)

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 

Cache speedup with Heisencache for Drupal 7 and Drupal 8

  • 1. Speed up your data caches with Heisencache Frédéric G. Marand
  • 2. 3/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS IMPLEMENTATION MEASURING CONTEXT
  • 3. 4/59 | heisencache-15D17 | © OSInet Frederic MARAND Perception ● Front-end dominates ● Downloads start after the page is served ● Not all sites are equal when it comes to the back/front performance ratio CONTEXT
  • 4. 5/59 | heisencache-15D17 | © OSInet Frederic MARANDwww.webpagetest.org Major press site example: ● simple content ● below 500 msec backend ● tons of extras on page ● result: 23 sec front-end time ● +/- 50 * backend time Front-endCONTEXT
  • 5. 6/59 | heisencache-15D17 | © OSInet Frederic MARAND www.webpagetest.org Major Drupal Commerce site example: ● complex backend logic ● optimized front-end ● +/- 4 * backend time ● backend impact = 25% Back-endCONTEXT
  • 6. 7/59 | heisencache-15D17 | © OSInet Frederic MARAND ● Level 1: page caching ● Opcode cache ● Varnish, CDN ● Level 2: storage tuning ● MySQL slow queries ● MongoDB, Redis, ... ● Level 3: cache tuning ● On we go... CC BY­NC­ND 2.0 najbo/Flickr Battle planCONTEXT
  • 7. 8/59 | heisencache-15D17 | © OSInet Frederic MARAND CONTEXT LESS DB QUERIES MEANS DATA CACHING Drupal needs caching Cache is a good thing «Cache is king» Steve Souders, author of High-Performance web sites http://fr.slideshare.net/souders/cache-is-king
  • 8. 9/59 | heisencache-15D17 | © OSInet Frederic MARAND Photo by Alan Light Too much of a good thing is WONDERFUL
  • 9. 10/59 | heisencache-15D17 | © OSInet Frederic MARAND (Not that kind of good thing) CONTEXT
  • 10. 11/59 | heisencache-15D17 | © OSInet Frederic MARAND CONTEXT CACHING CAN BE BAD ● Memcached speed +/- like good MySQL ● Can be worse: clustering network issues ● A miss costs more than uncached work
  • 11. 12/59 | heisencache-15D17 | © OSInet Frederic MARAND CONTEXT HOW DO YOU KNOW WHEN YOU'VE HAD ENOUGH? MEASURE! CC BY­NC­ND 3.0 http://saintgasoline.com
  • 12. 14/59 | heisencache-15D17 | © OSInet Frederic MARAND Introducing HEISENCACHE 8.x com ing
  • 13. 15/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS IMPLEMENTATION MEASURING CONTEXT
  • 14. 16/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING WHY HEISENCACHE? CC BY 3.0 Gerhard Hund
  • 15. 17/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING ● Reduce uncertainty ● Minimize observer impact ● Don't push the analogy too far
  • 16. 18/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING THE COST OF MEASUREMENT ● Observer code runs within Drupal ● Needs to be invoked → more CPU ● Needs to store data → more I/O
  • 17. 19/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING CACHING BEHAVIOUR vs. LOAD PROFILE
  • 18. 20/59 | heisencache-15D17 | © OSInet Frederic MARAND ● Instant peaks for top content ● Fast decay ● TTL works wonders ● Long tail issues MEASURING: Sports site CC BY 2.0 Ronnie Macdonald
  • 19. 21/59 | heisencache-15D17 | © OSInet Frederic MARAND ● Many content pieces ● Few repeat hits ● Complex cache policy ● Avoid caching some data ● Preserve cache memory for selected content MEASURING: Regional TV
  • 20. 22/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING OBSERVE CACHE IN PRODUCTION
  • 21. 23/59 | heisencache-15D17 | © OSInet Frederic MARAND MEASURING in production ● Precision vs. velocity? ● Performance module ● Cannot write to the DB in real-time ● Cached pages ● Observing Drupal bootstrap
  • 22. 24/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS IMPLEMENTATION MEASURING CONTEXT
  • 23. 25/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: early hits DRUPAL 7 BOOT SEQUENCE ● Page cycle: index.php drupal_bootstrap→ – Phases: Configuration, Page Cache, DB, Variables, Session, Page Header, Language, Full – Cache handlers declaration: settings.php – Exotic early hits : sites.php, settings.php, drupal_settings_initialize() – Common early hits : _drupal_bootstrap_page_cache ● Need to work before DB and module system
  • 24. 29/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: early hits SOLUTION D7 : Use a standalone event system D8 : Use the SF2 EventDispatcher
  • 25. 30/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: operation IDEAS ● Doctrine, NodeJS and Symfony event systems ● Use dependency injection, but no DIC (on D7) ● Use the standard DIC and event system (on D8)
  • 26. 31/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: operation BONUS ● D7 : Composer for deployment – Before hooks, so no composer_manager ● D8 : normal service, easy to build ● Easy unit testing → decent code coverage
  • 27. 32/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: coverage
  • 28. 33/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION cache (factory, backend) driver DECORATOR PATTERN ● Original Inspiration: authcache ● Read existing cache configuration ● D7 : wrap settings, claim to be the sole cache provider ● D8 : decorate CacheFactory, CacheBackends ● Handle requests per the original configuration, but enhance the service
  • 29. 34/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: events EMIT EVENTS AROUND ALL OPERATIONS ● Configuration ● Initialization ● Cache operations ● …and page termination
  • 30. 35/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: late hits CATCHING LATE HITS 1/2 ● D7 hook_exit ? Lots of code after that @see drupal_page_footer() ● D7 Catching page caching ? – not triggered on AJAX callbacks @see ajax_deliver() – poormancron can run lots of code after that
  • 31. 36/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: late hits CATCHING LATE HITS 2/2 ● D7/D8 Catching the session commit? – Only if a session was started – Dirty interactions – Session regeneration ● D8 : kernel.terminate, kernel.response ? ● => Shutdown function stack
  • 32. 37/59 | heisencache-15D17 | © OSInet Frederic MARAND NEEDS ● minimize I/O load → aim for #writes <= 1 ● «Fingers crossed»-inspired strategy – Keep data in memory during the page lifecycle – Write it at end of page IMPLEMENTATION: storing data
  • 33. 38/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: storing data CHALLENGES ● Writing after the last possible cache operation ● Write while classes are still available ● D7 : Passing information within an event-oriented procedural code base
  • 34. 39/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: D7 events EventEmitter (à la Node) ● narrowcast events created by sources ● subscribers add/remove events on the fly – can further tighten narrowcasting
  • 35. 40/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: D7 events EventSubscriberInterface ● Doctrine/Symfony ● + (add | remove)Event() EventSourceInterface ● Define events a source can emit ● Base source of events: Cache API
  • 36. 41/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: events D7/D8 SYNTHETIC EVENTS ● API Limitations: post-operation cache events do not get the operation settings ● Enable immediate event reconciliation ● Event susbcribers can also be sources
  • 37. 42/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: events D7/D8 SYNTHETIC EVENT EXAMPLES ● MissSubscriber: miss info for Cache::get() ● PerformanceSubscriber: timing info for all ops ● WriteSubscriber: single event for write and delete ops
  • 38. 44/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: setup settings.heisencache.inc D7 CONFIGURATION ● Retrieve the EventEmitter from Config instance ● Create EventSubscriber instances as chosen ● Register them on chosen events ● DebugSubscriber listen to all events – not in production ! ● Don't forget to include a WriterSubscriber ● D8 : customize development.services.yml
  • 39. 45/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: extending HEISENCACHE IS A CODER TOOL
  • 40. 46/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: extending EASY TO EXTEND : ● Write additional EventSubscriber classes ● Add them to your configuration ALREADY EXTENDED : ● WriterSubscriber (France Télévisions) ● CacheReadLogWriterSubscriber (AmazeeLabs) ● Alternate loader (AmazeeLabs)
  • 41. 47/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: extending MOST TYPICAL ● Create new subscriber for custom conditions ● Create new writer classes ● Target alternate stores for speed and ease ● MongoDB ● K/V or data structure store (Redis) ● Message queue (Beanstalkd, RabbitMQ, ZeroMQ, etc)
  • 42. 50/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: UI ● ROLL YOUR OWN! ● Use WatchdogSubscriber data ● Use admin/reports/dblog or rework it ● Views integration ● Use the SqlWriterSubscriber data ● Two default views provided (Sql, Watchdog) ● Symfony WebProfiler toolbar ● Replace/complement existing cache report
  • 43. 51/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: UI ● Data collecting: raw data, big volume ● Three-step data processing ‒ Collect → Heisencache ‒ Cook → Process data based on your needs ‒ Consumer → Visualize processed data ● Sweet spot ‒ Use a queue (Beanstalkd, etc) instead of cron ‒ Time-series database for longitudinal analysis : RRD, InfluxDB, OpenTSDB ...
  • 44. 52/59 | heisencache-15D17 | © OSInet Frederic MARAND IMPLEMENTATION: UI Comparing with network analysis ● Heisencache is like ‒ libpcap / tcpdump / iptrace / snoop ... ● Someone has to design a Wireshark on top of it
  • 45. 53/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS IMPLEMENTATION MEASURING CONTEXT
  • 46. 54/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS: instant data TYPICAL USEFUL INSTANT RESULTS ● Repeated misses – Usual suspects: default Memcached and big writes (prod) – Rewriting a variable on most pages (dev) ● Many calls to same key – Usual suspect: missing or broken static cache ● Many calls to related keys – Usual suspect: code loop instead of cache multiple
  • 47. 55/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS: longitudinal analysis TYPICAL USEFUL TIME-SERIES RESULTS ● Size of known-to-be-growing keys. Usual suspects: – Translation cache → Someone left a t($foo) somewhere – Context cache → Contexts are piled instead of refactored – Views plugins → Hard Views problem. Partial fix only. ● Miss rate shooting up from baseline on a bin – Call for instant analysis on that bin: likely a code regression ● Response time shooting up on a normally stable key – Network/server problem, bin saturation – Call for instant analysis on the cache instance
  • 48. 56/59 | heisencache-15D17 | © OSInet Frederic MARAND RESULTS : beyond debugging ● Storing cache hit patterns for cache warming ● Pre-warm cache on keys selected with a Heisencache WriterSubscriber ● Exemple with the AmazeeLabs fork : https://github.com/AmazeeLabs/heisencache
  • 49. 58/59 | heisencache-15D17 | © OSInet Frederic MARAND Drupal 8? WHEN? ● When bigger sites start to deploy D8 ● …and need them to go faster :-) ● First steps already available : ● https://github.com/FGM/heisencache
  • 50. 59/59 | heisencache-15D17 | © OSInet Frederic MARAND Drupal, faster http://www.osinet.fr/