Personal tools
You are here: Home Plone XP Plone Demo Site Load Testing RelStorage: Plone 3.3.4, PostgreSQL 8.1.21

Load Testing RelStorage: Plone 3.3.4, PostgreSQL 8.1.21

— filed under: , ,

About Plone 3.3.4

Here are the versions for Plone 3.3.4: http://dist.plone.org/release/3.3.4/versions.cfg

By default, Plone 3.3.4 is using Zope 2.10.11, which is using ZODB 3.7.1.  For ZODB3 before version 3.9, a invalidation polling patch is required for using RelStorage.  So we have to patch ZODB3.  Patched ZODB3 could be found in this website: http://packages.willowrise.org/.

Preparing PostgreSQL Database

Creating user and database for Plone site in PostgreSQL server.  It is very convenient to use the shell commands: createuser and createdb.

$ sudo su - postgres
$ createuser -P plone
-- follow the instruction to provide password and set up previleges
$ createdb -O plone plone

Check the PostgreSQL documentation for more details about shell commands: http://developer.postgresql.org/pgdocs/postgres/reference-client.html

Preparing Buildout

[buildout]
parts =
pgsql-instance
pgsql-plonesite
find-links = http://packages.willowrise.org

[versions]
zope.testing = 3.9.5
funkload = 1.11.0
ZODB3 = 3.7.3-polling

[pgsql-instance]
rel-storage = type postgresql dsn dbname='plone' user='plone' host='localhost' password='password' # blob-dir ${buildout:directory}/var/blobstorage eggs = ${instance:eggs} RelStorage psycopg2 == 2.2.2

The testing result doesn't show big  different between a ZODB database and a RelStorage + PostgreSQL.

I think we need more tunning work on PostgreSQL database side.  The easy improvement is increasing the shared_buffers setting for postmaster.  It is configuration file postgresql.conf, the value has unit 8kb.  For example, shared_buffers = 8000 will be around 64MB buffer.

About Pack

One interesting thing that I experienced about database pack is that the size of database will not reduced after packing!  We need some database level clean up work to reduce the database size.  Specifically for PostgreSQL, we need vacuum database: vacuumdb.  For example a full vacuum for database plone.

$ vacuumdb -f plone
Document Actions