SlideShare a Scribd company logo
1 of 40
Download to read offline
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.1 von 40
12th Plone Conference
Bristol, UK, 2014
Big Fat Fast Plone
Scale Up, Speed Up
Jens W. Klein twitter: @yenzenz
jk@kleinundpartner.at
30.10.2014 http://kleinundpartner.at
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.2 von 40
I'am ...
● located in Innsbruck, Tyrol, Austria
● doing Plone since v.1.0
● a consultant, developer, open source evangelist
● owner of Klein & Partner KG, co-founder and
member of BlueDynamics Alliance
Ad:
Alpine City Sprint at Innsbruck
January 20th to 25th 2015 – registration at
http://www.coactivate.org/projects/alpinecitysprint2015
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.3 von 40
Problem
● Default Plone is not that fast
● Scales great horizontally (add machines)
● Still bottlenecks
– primary loading stuff from ZODB
– rendering of sites
– searching information
– third party services: ldap, crm, sap-bc, ...
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.4 von 40
You have
to know
your knobs
and
handles.
Juliett U-461
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.5 von 40
3 different customers
(1)
● Niederösterreich Kulturwirtschaft (NOEKU)
● central service for several cultural institutions in
Lower Austria
● over 30 Plone Sites (including e-ticketing)
● hi-availibility on low-to-mid budget
● self hosted on hardware,
● VM's with KVM, HA with Pacemaker, CRM, DRBD
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.6 von 40
Noeku in Detail
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.7 von 40
3 different customers
(2)
● Zumtobel Group AG
● Internationally leading supplier of integral
lighting solutions
● Brand specific international product Portals
● Customer Extranets, B2B e-shop
● Hosting on dedicated and managed VM's and
NAS storage
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.8 von 40
3 different customers
(3)
● HTU Graz
● general students' representative body, serves
as the students' government, at the University
of Graz
● One plone site with several subsites (lineage)
● Lots of students looking at it = peak-load
● One virtual machine on overloaded host
= not enough resources
● Low-budget
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.9 von 40
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.10 von 40
Data Flow in Plone
or
the Publishing Chain
Database
Client
Connection
Pool
Plone 1..n
Caching
Proxy
Load
Balancer
Webserver
Webbrowser
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.11 von 40
Data Flow in Plone
or
the Publishing Chain
Database
Client
Connection
Pool
Plone 1..n
Caching
Proxy
Load
Balancer
Webserver
Webbrowser
ZEO-Server or
PostgreSQL, plus
Blobstorage (NFS, NAS)
Different ZEO
Storage Adapters
HAProxy or
Pound
Varnish
(what else?)
NGINX
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.12 von 40
Data Flow in Plone
or
the Publishing Chain
Database
Client
Connection
Pool
Plone 1..n
Caching
Proxy
Load
Balancer
Webserver
Webbrowser
ZEO-Server or
PostgreSQL, plus
Blobstorage (NFS, NAS)
Different ZEO
Storage Adapters
HAProxy or
Pound
Varnish
(what else?)
NGINX
Memcached
LDAP
Other third part services
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.13 von 40
Data Flow in Plone
or
the Publishing Chain
Database
Client
Connection
Pool
Plone 1..n
Caching
Proxy
Load
Balancer
Webserver
Webbrowser
ZEO-Server or
PostgreSQL, plus
Blobstorage (NFS, NAS)
Different ZEO
Storage Adapters
HAProxy or
Pound
Varnish
(what else?)
NGINX
Memcached
LDAP
Other third part services
Consider also:
CPU Cores
Used RAM/ Diskcache ratio
IO network and disk
...
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.14 von 40
Tools
know them!
● install Munin on every node and monitor all you
can.
● fio is simple powerful to get measures
● read how linux manages disk/RAM
● know your hardware and your VMs (if any)
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.15 von 40
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.16 von 40
Database Level
● NOEKU: ZEO-Server + BlobStorage, both
replicated with DRBD on own self-managed VM
● Zumtobel: RelStorage on PostgreSQL and
Blobs from NAS over NFS
● HTU Graz: RelStorage on PostgreSQL, all on
one machine.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.17 von 40
Never store blobs in ZODB
Use blobstorage!
(check your code and adons!)
First things first
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.18 von 40
Classical ZEO
Server+Blobstorage
● Using classical ZEO-server + blobstorage
– ensure a fast IO to HDD or NAS
– have enough RAM for disk buffering
● Blobstorage on NFS/NAS:
– shared blobs and mount on each node
– mount NAS/NFS read-only on webserver node
and use collective.xsendfile (X-HTTP-Accel)
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.19 von 40
RelStorage + Blobstorage
● Never store blobs in SQL DB (same as with
ZODB, see slide before)
● Do not use MySQL if you can avoid it
● Configure your SQL DB properly, defaults are
not enough!
● Ensure a sane disk-/storage-IO (on Vms this is a
common bottleneck).
● Have RAM left for OS-level disk-caching.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.20 von 40
Connections Pool
ZEO- vs. RelStorage Adapter
● ZEO-Server pushes
invalidations to client
● Disk cache of pickled
objects per Zope
instance
● RAM-cache of
unpickled objects per
connection
● ZEO-Client polls for
invalidated objects
● Memcached of pickled
objects shared
between Zope
instances on one
machine
● RAM-cache of
unpickled objects per
connection
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.21 von 40
Database-/ Client-
Configurations (1)
● NOEKU (ZEO)
– 30 sites with different sizes
– 2 (rare: 4) instances, each 2 threads
– RAM cache ~750 - 20000 objects – depending on
the site – no disk cache
– ZEO-Server with DRBD and failover (works with
Plone >=4) on own Virtual Maschine
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.22 von 40
Database-/ Client-
Configurations (2)
● Zumtobel (RelStorage, history free)
– Different setups for different kinds of sites!
– Always 2 VMs for, because of easier
maintainability
– 16 instances plus some worker-instances (async
import, zipfile creation, ...)
– each 2 or 4 threads
– RAM cache 30000 or 100000 objects
– Memcached as shared connection cache
– relstorage_packer (search on pypi)
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.23 von 40
Database-/ Client-
Configurations (3)
● HTU (RelStorage, history free)
– 6 instances, each 1 thread
– RAM cache 30000 objects
– Memcached as shared connection cache
– Poll interval 120 sec
– Blobstorage shared folder on same maschine
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.24 von 40
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.25 von 40
All between Request and
Response has to be fast
REQUEST
(what Plone does)
RESPONSE
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.26 von 40
Plone Configuration
● Turn off: debug mode, verbose security, logging,
deprecation warnings, …
● Configure plone.app.caching, even if you do not
plan to use varnish! → browser caches too!
● multiple plone instances: use memcached
instead of classic ramcache
● install jarn.checkinterval and tweak the
checkinterval of your instance in your live
buildout.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.27 von 40
Custom Code and
Someones Add-On
● know plone.memoize, use it
● never calculate/search twice
● cache searched/ prepared data and/or rendered
pages or snippets
● again: never store blobs in ZODB.
● use the catalog
● dont overuse metadata
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.28 von 40
Write conflicts
● Happens >90% of time at catalog
● Use collective.solr/ collective.indexing
● Reduce time of the transaction
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.29 von 40
Lots of objects?
● large site with several 100 thousands of content
items (and even more objects in ZODB)?
● Catalog queries are slow?
● Use an own mount point with own caches for
the catalog
● if that does not help, use collective.solr
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.30 von 40
Archetypes vs. Dexterity
● in Archetypes avoid to "wake up" (read: load
from DB) the object, ask the catalog and use
metadata
● in Dexterity its some times cheaper to wake up
the object:
– If objects are small.
– And if you iterate over a folder or subtree
– Or if adding lots of metadata to the catalog
would be needed.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.31 von 40
Using Webservices, LDAP,
other Databases
● Talking to external systems over network is
slow.
● Cache whats possible → plone.memoize
● Measure the external system!
● How fail safe are the services?
● Does your addon/custom code behaves nicely if
the service fails?
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.32 von 40
In case of serious
performance trouble
● Measure!
– Munin (base system parameters),
– Fio,
– collective.traceview
– Good old friend Products.ZopeProfiler
– haufe.requestmonitoring,
Products.LongRequestLogger
● Do not change more than one parameter at
once,
● measure again.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.33 von 40
plone.app.caching
● Caching is essential in order to serve hi-traffic.
● On Peak load a site can be faster (!) than on
normal traffic.
● Varnish + plone.app.caching are our superheros
● Default settings are good for default sites
● Custom Addons with own types and
templates needs extra configuration for
each type and template:
– Do this! Calculate time for this task, its some
work!
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.34 von 40
Micro-Caching
● On hi traffic introduce a new caching rule for
one two five minute caches
● It speeds up a public facing site really
good!
● Apply this rule to all types/ templates youre
expecting to be hit
● This means a small delay for content editors
between save and live.
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.35 von 40
Microcaching
used at...
● Zumtobel
– Extranet on group level
– Portal for all anonymous
● HTU Graz
– For all anonymous
● Bunch of other sites
– Mostly anonymous access
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.36 von 40
Load Balancer
● Pound → tiny, simple, stable, old, but difficult to
get measurements out of it.
● HAProxy → not that simple, complex
configuration, newer, nice WebUI for stats
● Point same request type to same instance
– Stick to session (public site)
– Stick to User (intranet)
– Stick to Group/ other vector (customer extranet)
● Group Instances for editors/ anonymous
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.37 von 40
Webserver
● NGINX – others possible, but more difficult to
configure
● Set the proxy_* to recommended values
● Consider configuring direct blob delivery (using
collective.xsendfile)
– collective.xsendfile needs some love to work fine
with dexterity and plone.app.imaging (deliver
more variants) – any takers?
● Mostly it works fine OOTB
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.38 von 40
*Cat Image (Bobcat by Markus Wollny)
CC BY-NC-SA2.0 License
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.39 von 40
Further Reading
● Plone Documentation Chapter
„Performance and tuning“
http://docs.plone.org/manage/deploying/testing
_tuning/performance/index.html
Text: Creative Commons Namensnennung-Keine
kommerzielle Nutzung- Keine Bearbeitung 3.0
Österreich Lizenz.40 von 40
Questions?

More Related Content

What's hot

Last Month in PHP - March 2016
Last Month in PHP - March 2016Last Month in PHP - March 2016
Last Month in PHP - March 2016Eric Poe
 
Http2 on go1.6rc2
Http2 on go1.6rc2Http2 on go1.6rc2
Http2 on go1.6rc2Jxck Jxck
 
Conda - alternative packaging for scientific computing
Conda - alternative packaging for scientific computingConda - alternative packaging for scientific computing
Conda - alternative packaging for scientific computingtakluyver
 
Working with npm packages
Working with npm packagesWorking with npm packages
Working with npm packagesTomasz Bak
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Asher Martin
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Igalia
 
Docker & PHP - Practical use case
Docker & PHP - Practical use caseDocker & PHP - Practical use case
Docker & PHP - Practical use caserjsmelo
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Install Qt/Qt Quick for Android devices
Install Qt/Qt Quick for Android devicesInstall Qt/Qt Quick for Android devices
Install Qt/Qt Quick for Android devicesPaolo Sereno
 
Introduction to NPM and building CLI Tools with Node.js
Introduction to NPM and building CLI Tools with Node.jsIntroduction to NPM and building CLI Tools with Node.js
Introduction to NPM and building CLI Tools with Node.jsSuroor Wijdan
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopPyCon Italia
 
A Hands-On Set of Programming Problems Using Python and OpenCV
A Hands-On Set of Programming Problems Using Python and OpenCVA Hands-On Set of Programming Problems Using Python and OpenCV
A Hands-On Set of Programming Problems Using Python and OpenCVNader Karimi
 

What's hot (20)

Middleware web APIs in PHP 7.x
Middleware web APIs in PHP 7.xMiddleware web APIs in PHP 7.x
Middleware web APIs in PHP 7.x
 
Last Month in PHP - March 2016
Last Month in PHP - March 2016Last Month in PHP - March 2016
Last Month in PHP - March 2016
 
How we do python
How we do pythonHow we do python
How we do python
 
Http2 on go1.6rc2
Http2 on go1.6rc2Http2 on go1.6rc2
Http2 on go1.6rc2
 
GIT pour développeur
GIT pour développeurGIT pour développeur
GIT pour développeur
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Conda - alternative packaging for scientific computing
Conda - alternative packaging for scientific computingConda - alternative packaging for scientific computing
Conda - alternative packaging for scientific computing
 
Working with npm packages
Working with npm packagesWorking with npm packages
Working with npm packages
 
IPSEC
IPSECIPSEC
IPSEC
 
Lua
LuaLua
Lua
 
NPM THE GUIDE
NPM THE GUIDENPM THE GUIDE
NPM THE GUIDE
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
 
Docker & PHP - Practical use case
Docker & PHP - Practical use caseDocker & PHP - Practical use case
Docker & PHP - Practical use case
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Install Qt/Qt Quick for Android devices
Install Qt/Qt Quick for Android devicesInstall Qt/Qt Quick for Android devices
Install Qt/Qt Quick for Android devices
 
Introduction to NPM and building CLI Tools with Node.js
Introduction to NPM and building CLI Tools with Node.jsIntroduction to NPM and building CLI Tools with Node.js
Introduction to NPM and building CLI Tools with Node.js
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntop
 
A Hands-On Set of Programming Problems Using Python and OpenCV
A Hands-On Set of Programming Problems Using Python and OpenCVA Hands-On Set of Programming Problems Using Python and OpenCV
A Hands-On Set of Programming Problems Using Python and OpenCV
 
.Net Core
.Net Core.Net Core
.Net Core
 

Viewers also liked

YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenJens Klein
 
cornerstone.soup Lighning Talk on Plone Conference 2009
cornerstone.soup Lighning Talk on Plone Conference 2009cornerstone.soup Lighning Talk on Plone Conference 2009
cornerstone.soup Lighning Talk on Plone Conference 2009Jens Klein
 
Projekte mit Plone
Projekte mit PloneProjekte mit Plone
Projekte mit PloneJens Klein
 
Was ist Plone?
Was ist Plone?Was ist Plone?
Was ist Plone?Jens Klein
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneJens Klein
 
Schlangenhochzeit in-der Wolke - Pyramid auf Google Appengine
Schlangenhochzeit in-der Wolke - Pyramid auf Google AppengineSchlangenhochzeit in-der Wolke - Pyramid auf Google Appengine
Schlangenhochzeit in-der Wolke - Pyramid auf Google AppengineJens Klein
 
Plone is so semantic, isn't it?
Plone is so semantic,  isn't it?Plone is so semantic,  isn't it?
Plone is so semantic, isn't it?Jens Klein
 

Viewers also liked (8)

Plone Einführung
Plone EinführungPlone Einführung
Plone Einführung
 
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
 
cornerstone.soup Lighning Talk on Plone Conference 2009
cornerstone.soup Lighning Talk on Plone Conference 2009cornerstone.soup Lighning Talk on Plone Conference 2009
cornerstone.soup Lighning Talk on Plone Conference 2009
 
Projekte mit Plone
Projekte mit PloneProjekte mit Plone
Projekte mit Plone
 
Was ist Plone?
Was ist Plone?Was ist Plone?
Was ist Plone?
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit Plone
 
Schlangenhochzeit in-der Wolke - Pyramid auf Google Appengine
Schlangenhochzeit in-der Wolke - Pyramid auf Google AppengineSchlangenhochzeit in-der Wolke - Pyramid auf Google Appengine
Schlangenhochzeit in-der Wolke - Pyramid auf Google Appengine
 
Plone is so semantic, isn't it?
Plone is so semantic,  isn't it?Plone is so semantic,  isn't it?
Plone is so semantic, isn't it?
 

Similar to Big Fat Fast Plone Conference Talk

K8s best practices from the field!
K8s best practices from the field!K8s best practices from the field!
K8s best practices from the field!DoiT International
 
Testing Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with SherlockTesting Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with SherlockScyllaDB
 
The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)Casey Bisson
 
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18The lies we tell our code, LinuxCon/CloudOpen 2015-08-18
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18Casey Bisson
 
Making clouds: turning opennebula into a product
Making clouds: turning opennebula into a productMaking clouds: turning opennebula into a product
Making clouds: turning opennebula into a productCarlo Daffara
 
Making Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a ProductMaking Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a ProductNETWAYS
 
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...OpenNebula Project
 
Rook: Storage for Containers in Containers – data://disrupted® 2020
Rook: Storage for Containers in Containers  – data://disrupted® 2020Rook: Storage for Containers in Containers  – data://disrupted® 2020
Rook: Storage for Containers in Containers – data://disrupted® 2020data://disrupted®
 
NetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmapNetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmapRuslan Meshenberg
 
Elasticsearch on Kubernetes
Elasticsearch on KubernetesElasticsearch on Kubernetes
Elasticsearch on KubernetesJoerg Henning
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Jean-Frederic Clere
 
Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)svub
 
Introduction to containers
Introduction to containersIntroduction to containers
Introduction to containersNitish Jadia
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Chris Shenton
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2aspyker
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebula Project
 

Similar to Big Fat Fast Plone Conference Talk (20)

K8s best practices from the field!
K8s best practices from the field!K8s best practices from the field!
K8s best practices from the field!
 
Kubernetes: My BFF
Kubernetes: My BFFKubernetes: My BFF
Kubernetes: My BFF
 
Testing Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with SherlockTesting Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with Sherlock
 
Scaling symfony apps
Scaling symfony appsScaling symfony apps
Scaling symfony apps
 
The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)
 
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18The lies we tell our code, LinuxCon/CloudOpen 2015-08-18
The lies we tell our code, LinuxCon/CloudOpen 2015-08-18
 
Making clouds: turning opennebula into a product
Making clouds: turning opennebula into a productMaking clouds: turning opennebula into a product
Making clouds: turning opennebula into a product
 
Making Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a ProductMaking Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a Product
 
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
 
Rook: Storage for Containers in Containers – data://disrupted® 2020
Rook: Storage for Containers in Containers  – data://disrupted® 2020Rook: Storage for Containers in Containers  – data://disrupted® 2020
Rook: Storage for Containers in Containers – data://disrupted® 2020
 
NetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmapNetflixOSS meetup lightning talks and roadmap
NetflixOSS meetup lightning talks and roadmap
 
Elasticsearch on Kubernetes
Elasticsearch on KubernetesElasticsearch on Kubernetes
Elasticsearch on Kubernetes
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3
 
Modularity problems
Modularity  problemsModularity  problems
Modularity problems
 
Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)Meteor Day Athens (2014-11-07)
Meteor Day Athens (2014-11-07)
 
Introduction to containers
Introduction to containersIntroduction to containers
Introduction to containers
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
Second Skin: Real-Time Retheming a Legacy Web Application with Diazo in the C...
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 

More from Jens Klein

RelStorage Plone Zope RDB Storage Backend
RelStorage Plone Zope RDB Storage BackendRelStorage Plone Zope RDB Storage Backend
RelStorage Plone Zope RDB Storage BackendJens Klein
 
Plone Performance, Profiling, Power-Consumption
Plone Performance, Profiling, Power-ConsumptionPlone Performance, Profiling, Power-Consumption
Plone Performance, Profiling, Power-ConsumptionJens Klein
 
RelStorage - an alternative ZODB Backend
RelStorage - an alternative ZODB BackendRelStorage - an alternative ZODB Backend
RelStorage - an alternative ZODB BackendJens Klein
 
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009Jens Klein
 
Plone - Community, Entwicklung, Support
Plone - Community, Entwicklung, SupportPlone - Community, Entwicklung, Support
Plone - Community, Entwicklung, SupportJens Klein
 
Plone Conference 2007 Naples: Lightning Talk Daidalos
Plone Conference 2007 Naples: Lightning Talk DaidalosPlone Conference 2007 Naples: Lightning Talk Daidalos
Plone Conference 2007 Naples: Lightning Talk DaidalosJens Klein
 

More from Jens Klein (6)

RelStorage Plone Zope RDB Storage Backend
RelStorage Plone Zope RDB Storage BackendRelStorage Plone Zope RDB Storage Backend
RelStorage Plone Zope RDB Storage Backend
 
Plone Performance, Profiling, Power-Consumption
Plone Performance, Profiling, Power-ConsumptionPlone Performance, Profiling, Power-Consumption
Plone Performance, Profiling, Power-Consumption
 
RelStorage - an alternative ZODB Backend
RelStorage - an alternative ZODB BackendRelStorage - an alternative ZODB Backend
RelStorage - an alternative ZODB Backend
 
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009
AGX - Tree Transformations with Python - Lightning Talk at Plone Conference 2009
 
Plone - Community, Entwicklung, Support
Plone - Community, Entwicklung, SupportPlone - Community, Entwicklung, Support
Plone - Community, Entwicklung, Support
 
Plone Conference 2007 Naples: Lightning Talk Daidalos
Plone Conference 2007 Naples: Lightning Talk DaidalosPlone Conference 2007 Naples: Lightning Talk Daidalos
Plone Conference 2007 Naples: Lightning Talk Daidalos
 

Recently uploaded

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Big Fat Fast Plone Conference Talk

  • 1. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.1 von 40 12th Plone Conference Bristol, UK, 2014 Big Fat Fast Plone Scale Up, Speed Up Jens W. Klein twitter: @yenzenz jk@kleinundpartner.at 30.10.2014 http://kleinundpartner.at
  • 2. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.2 von 40 I'am ... ● located in Innsbruck, Tyrol, Austria ● doing Plone since v.1.0 ● a consultant, developer, open source evangelist ● owner of Klein & Partner KG, co-founder and member of BlueDynamics Alliance Ad: Alpine City Sprint at Innsbruck January 20th to 25th 2015 – registration at http://www.coactivate.org/projects/alpinecitysprint2015
  • 3. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.3 von 40 Problem ● Default Plone is not that fast ● Scales great horizontally (add machines) ● Still bottlenecks – primary loading stuff from ZODB – rendering of sites – searching information – third party services: ldap, crm, sap-bc, ...
  • 4. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.4 von 40 You have to know your knobs and handles. Juliett U-461
  • 5. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.5 von 40 3 different customers (1) ● Niederösterreich Kulturwirtschaft (NOEKU) ● central service for several cultural institutions in Lower Austria ● over 30 Plone Sites (including e-ticketing) ● hi-availibility on low-to-mid budget ● self hosted on hardware, ● VM's with KVM, HA with Pacemaker, CRM, DRBD
  • 6. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.6 von 40 Noeku in Detail
  • 7. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.7 von 40 3 different customers (2) ● Zumtobel Group AG ● Internationally leading supplier of integral lighting solutions ● Brand specific international product Portals ● Customer Extranets, B2B e-shop ● Hosting on dedicated and managed VM's and NAS storage
  • 8. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.8 von 40 3 different customers (3) ● HTU Graz ● general students' representative body, serves as the students' government, at the University of Graz ● One plone site with several subsites (lineage) ● Lots of students looking at it = peak-load ● One virtual machine on overloaded host = not enough resources ● Low-budget
  • 9. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.9 von 40
  • 10. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.10 von 40 Data Flow in Plone or the Publishing Chain Database Client Connection Pool Plone 1..n Caching Proxy Load Balancer Webserver Webbrowser
  • 11. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.11 von 40 Data Flow in Plone or the Publishing Chain Database Client Connection Pool Plone 1..n Caching Proxy Load Balancer Webserver Webbrowser ZEO-Server or PostgreSQL, plus Blobstorage (NFS, NAS) Different ZEO Storage Adapters HAProxy or Pound Varnish (what else?) NGINX
  • 12. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.12 von 40 Data Flow in Plone or the Publishing Chain Database Client Connection Pool Plone 1..n Caching Proxy Load Balancer Webserver Webbrowser ZEO-Server or PostgreSQL, plus Blobstorage (NFS, NAS) Different ZEO Storage Adapters HAProxy or Pound Varnish (what else?) NGINX Memcached LDAP Other third part services
  • 13. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.13 von 40 Data Flow in Plone or the Publishing Chain Database Client Connection Pool Plone 1..n Caching Proxy Load Balancer Webserver Webbrowser ZEO-Server or PostgreSQL, plus Blobstorage (NFS, NAS) Different ZEO Storage Adapters HAProxy or Pound Varnish (what else?) NGINX Memcached LDAP Other third part services Consider also: CPU Cores Used RAM/ Diskcache ratio IO network and disk ...
  • 14. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.14 von 40 Tools know them! ● install Munin on every node and monitor all you can. ● fio is simple powerful to get measures ● read how linux manages disk/RAM ● know your hardware and your VMs (if any)
  • 15. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.15 von 40
  • 16. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.16 von 40 Database Level ● NOEKU: ZEO-Server + BlobStorage, both replicated with DRBD on own self-managed VM ● Zumtobel: RelStorage on PostgreSQL and Blobs from NAS over NFS ● HTU Graz: RelStorage on PostgreSQL, all on one machine.
  • 17. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.17 von 40 Never store blobs in ZODB Use blobstorage! (check your code and adons!) First things first
  • 18. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.18 von 40 Classical ZEO Server+Blobstorage ● Using classical ZEO-server + blobstorage – ensure a fast IO to HDD or NAS – have enough RAM for disk buffering ● Blobstorage on NFS/NAS: – shared blobs and mount on each node – mount NAS/NFS read-only on webserver node and use collective.xsendfile (X-HTTP-Accel)
  • 19. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.19 von 40 RelStorage + Blobstorage ● Never store blobs in SQL DB (same as with ZODB, see slide before) ● Do not use MySQL if you can avoid it ● Configure your SQL DB properly, defaults are not enough! ● Ensure a sane disk-/storage-IO (on Vms this is a common bottleneck). ● Have RAM left for OS-level disk-caching.
  • 20. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.20 von 40 Connections Pool ZEO- vs. RelStorage Adapter ● ZEO-Server pushes invalidations to client ● Disk cache of pickled objects per Zope instance ● RAM-cache of unpickled objects per connection ● ZEO-Client polls for invalidated objects ● Memcached of pickled objects shared between Zope instances on one machine ● RAM-cache of unpickled objects per connection
  • 21. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.21 von 40 Database-/ Client- Configurations (1) ● NOEKU (ZEO) – 30 sites with different sizes – 2 (rare: 4) instances, each 2 threads – RAM cache ~750 - 20000 objects – depending on the site – no disk cache – ZEO-Server with DRBD and failover (works with Plone >=4) on own Virtual Maschine
  • 22. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.22 von 40 Database-/ Client- Configurations (2) ● Zumtobel (RelStorage, history free) – Different setups for different kinds of sites! – Always 2 VMs for, because of easier maintainability – 16 instances plus some worker-instances (async import, zipfile creation, ...) – each 2 or 4 threads – RAM cache 30000 or 100000 objects – Memcached as shared connection cache – relstorage_packer (search on pypi)
  • 23. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.23 von 40 Database-/ Client- Configurations (3) ● HTU (RelStorage, history free) – 6 instances, each 1 thread – RAM cache 30000 objects – Memcached as shared connection cache – Poll interval 120 sec – Blobstorage shared folder on same maschine
  • 24. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.24 von 40
  • 25. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.25 von 40 All between Request and Response has to be fast REQUEST (what Plone does) RESPONSE
  • 26. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.26 von 40 Plone Configuration ● Turn off: debug mode, verbose security, logging, deprecation warnings, … ● Configure plone.app.caching, even if you do not plan to use varnish! → browser caches too! ● multiple plone instances: use memcached instead of classic ramcache ● install jarn.checkinterval and tweak the checkinterval of your instance in your live buildout.
  • 27. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.27 von 40 Custom Code and Someones Add-On ● know plone.memoize, use it ● never calculate/search twice ● cache searched/ prepared data and/or rendered pages or snippets ● again: never store blobs in ZODB. ● use the catalog ● dont overuse metadata
  • 28. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.28 von 40 Write conflicts ● Happens >90% of time at catalog ● Use collective.solr/ collective.indexing ● Reduce time of the transaction
  • 29. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.29 von 40 Lots of objects? ● large site with several 100 thousands of content items (and even more objects in ZODB)? ● Catalog queries are slow? ● Use an own mount point with own caches for the catalog ● if that does not help, use collective.solr
  • 30. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.30 von 40 Archetypes vs. Dexterity ● in Archetypes avoid to "wake up" (read: load from DB) the object, ask the catalog and use metadata ● in Dexterity its some times cheaper to wake up the object: – If objects are small. – And if you iterate over a folder or subtree – Or if adding lots of metadata to the catalog would be needed.
  • 31. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.31 von 40 Using Webservices, LDAP, other Databases ● Talking to external systems over network is slow. ● Cache whats possible → plone.memoize ● Measure the external system! ● How fail safe are the services? ● Does your addon/custom code behaves nicely if the service fails?
  • 32. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.32 von 40 In case of serious performance trouble ● Measure! – Munin (base system parameters), – Fio, – collective.traceview – Good old friend Products.ZopeProfiler – haufe.requestmonitoring, Products.LongRequestLogger ● Do not change more than one parameter at once, ● measure again.
  • 33. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.33 von 40 plone.app.caching ● Caching is essential in order to serve hi-traffic. ● On Peak load a site can be faster (!) than on normal traffic. ● Varnish + plone.app.caching are our superheros ● Default settings are good for default sites ● Custom Addons with own types and templates needs extra configuration for each type and template: – Do this! Calculate time for this task, its some work!
  • 34. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.34 von 40 Micro-Caching ● On hi traffic introduce a new caching rule for one two five minute caches ● It speeds up a public facing site really good! ● Apply this rule to all types/ templates youre expecting to be hit ● This means a small delay for content editors between save and live.
  • 35. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.35 von 40 Microcaching used at... ● Zumtobel – Extranet on group level – Portal for all anonymous ● HTU Graz – For all anonymous ● Bunch of other sites – Mostly anonymous access
  • 36. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.36 von 40 Load Balancer ● Pound → tiny, simple, stable, old, but difficult to get measurements out of it. ● HAProxy → not that simple, complex configuration, newer, nice WebUI for stats ● Point same request type to same instance – Stick to session (public site) – Stick to User (intranet) – Stick to Group/ other vector (customer extranet) ● Group Instances for editors/ anonymous
  • 37. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.37 von 40 Webserver ● NGINX – others possible, but more difficult to configure ● Set the proxy_* to recommended values ● Consider configuring direct blob delivery (using collective.xsendfile) – collective.xsendfile needs some love to work fine with dexterity and plone.app.imaging (deliver more variants) – any takers? ● Mostly it works fine OOTB
  • 38. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.38 von 40 *Cat Image (Bobcat by Markus Wollny) CC BY-NC-SA2.0 License
  • 39. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.39 von 40 Further Reading ● Plone Documentation Chapter „Performance and tuning“ http://docs.plone.org/manage/deploying/testing _tuning/performance/index.html
  • 40. Text: Creative Commons Namensnennung-Keine kommerzielle Nutzung- Keine Bearbeitung 3.0 Österreich Lizenz.40 von 40 Questions?