[ZODB-Dev] Advice on whether to run relstorage database and Zope on different servers

Hanno Schlichting hanno at hannosch.eu
Thu Feb 24 14:50:02 EST 2011


Hi.

On Thu, Feb 24, 2011 at 4:20 PM, Anthony Gerrard
<anthonygerrard at gmail.com> wrote:
> * I'm familiar with enterprise environments where you would have an "app server" and a "database server" but are there any advantages to putting Zope and MySQL on different servers?

Database servers (be it MySQL or ZODB) have different requirements
than application servers (Zope). For small installations this
generally doesn't matter, but if you have larger deployments you can
adjust your hardware to fit the different roles.

Database servers are generally disk I/O bound. Using the fastest
possible and very reliable storage for these can help a lot. Be that
either a RAID 1 or 10 of SAS drives with 10k or 15k rpm drives or a
similar RAID of SSD's. Be prepared for some major performance
degradation if you put your database on non-local NAS or SAN setups.
Unless optimized correctly these will slow things down considerably.

The ZODB has almost no CPU load, the SQL queries done by RelStorage
also incur almost no CPU load. Memory isn't all too important for
databases as long as the indexes fit into memory and you can handle
savepoints / rollback data. Still some memory for the OS disk cache
does help.

Application servers are generally CPU bound and in case of Zope
benefit a lot from memory for the connection cache. With RelStorage
you can also use other cache setups like the shared memcached one. The
disk types of application servers don't matter much and can be simple
local disks, as there's no actual business data on the servers but
just reproducible configuration setup - if you use proper version
control for your code stored elsewhere that is.

> * I'd expect a performance hit if we run Zope + MySQL on separate servers but is this hit manageable?

As long as the servers are on the same physical network with a low
latency (~1ms) there's almost no overhead compared to running things
locally. If you get into higher latencies of 10ms or more, you will
see a noticeable drop in performance with Zope/Plone though.

Hanno


More information about the ZODB-Dev mailing list