[Zope] high loads, more threads, spinning wheels
Stefan H. Holek
stefan at epy.co.at
Sun May 1 07:34:08 EDT 2005
On 29. Apr 2005, at 15:34, Jim Abramson wrote:
> Can this be taken to mean that:
>
> - the practical maximum number of threads to run your single (non-ZEO)
> zope instance is {number of zodb connections in pool} else you risk
> deadlock
>
You will want to make the connection pool a bit larger than the number
of threads you start. But see below.
> if yes, would upping the number of ZODB connections effectively raise
> the ceiling - e.g. 12 ZODB connections -> 12 threads should perform
> properly ? Is increasing the number of ZODB cx's possible, let alone
> advisable? (why the default of 7 - not 6 or 8?)
>
Upping the number of threads is unlikely to give you better
performance. The only case where this could make sense is if you had
something like a highly saturated RDBMS backend, tying up your worker
threads.
But - Zope threads don't operate like you probably expect from knowing
Apache and similar models. For one, they *never* will run in parallel.
Python employs a global interpreter lock (GIL), so there will only be a
single thread "working" at all times. What you want is to up the number
of processes (interpreters) not the number of threads. Hence ZEO.
> More concretely, is there any good way to increase the request-handling
> capacity of a standalone instance, beyond the limits imposed by the
> defaults, without deploying ZEO?
Caching is essential. Put up a squid. And buy real hardware. Zope won't
give you love on PC-class devices. Buy more RAM, and then some more.
And there is nothing wrong with ZEO, really, there's only advantages. I
run it on my laptop even. On modern hardware you can easily run 2-4 ZEO
clients per CPU.
HTH,
Stefan
--
Software Engineering is Programming when you can't. --E. W. Dijkstra
More information about the Zope
mailing list