1

We have a VERY high traffic site on a Plone 3 installation that is currently struggling under the load. We have scaled the server many times over and its now apparent this is not the bottle neck.

Is it possible to setup a Zeo clustering server with Plone 3?

SteveM
  • 6,058
  • 1
  • 16
  • 20
AndrewMcLagan
  • 13,459
  • 23
  • 91
  • 158
  • 1
    There is [zc.zrs](https://pypi.python.org/pypi/zc.zrs) which does master-slave replication of databases. It already existed around the time of Plone 3 but was commercial then. It might be worth investigating if you can run recent versions with older Zope clients. – Ulrich Schwarz Apr 28 '16 at 05:28
  • Otherwise, you should consider RelStorage https://community.plone.org/t/relstorage-still-used/1992 – avoinea Apr 28 '16 at 06:43
  • I didn't get if you are already using a separated zeoserver or not. As Ulrich said zc.zrs can be a really good option, but you can also investigating if you have bottlenecks: for example Plone 3 were not using BLOB for files by default, and installing plone.app.blob can raise performance a lot – keul Apr 28 '16 at 07:31
  • No the site is on Zope as I'm aware (apologies not a plone dev). I was planning on booting a Zeo cluster through Docker or such. Just wondering if it was compatible with Plone 3.x.x. Although the zc.zrs sounds interesting... master-slave will alleviate it though? is there a master-master option? – AndrewMcLagan Apr 28 '16 at 07:39
  • @AndrewMcLagan: AFAIK, there is no master-master, but the list of write transactions that an anonymous user could cause are fairly small. (Logging in, Image thumbnail generation, PloneFormGen spring to mind.) Also, you may want to cache the hell out of things -- many people like Varnish. – Ulrich Schwarz Apr 28 '16 at 12:30
  • 2
    If you are not using a zeoserver *this* is the first thing to do... zeoclient+zeoserver is working on Plone 3 and older. Please try to check your configuration – keul Apr 28 '16 at 12:31

1 Answers1

5

The simple answer is: "yes, of course." If you're using Plone > 3.1, you do it pretty much the same way you set up a cluster in Plone 4 or 5.

Will it solve your problem? If your problem is that you're not making good use of all the cores on a multi-core machine, a zeocluster is a good way to solve it. The threading in a single Zope instance is very inefficient. A cluster does much better.

At the same time, you should look to see if you can reduce the work done by your Zope instances. Having a proxy cache and a good caching setup is the key.

And, spend some time updating to Plone 4.x. It's faster out-of-the-box at rendering pages and has a much more efficient blob-handling system. You'll also find that the documentation for Plone 4.x is excellent, including that on scaling. If you can't do that, track down a copy of "Practical Plone 3" for documentation on cluster architecture and caching.

SteveM
  • 6,058
  • 1
  • 16
  • 20
  • 1
    +100 on this. @AndrewMcLagan There are huge wins to be made, by making sure you have enough zeoclients to fully utilise the number of processor cores (showing us a quick ps -ef | grep python will enable us to tell you) and then employing caching technologies, blobstorage & seriously investigate upgrading to Plone 4 (even if you need to get paid help). If you don't do that then employing Docker / Relstorage / zc.zrs are all approaching from the wrong angle IMO. – Danimal Apr 29 '16 at 10:58