[Zope-DB] Re: Zope-DCOracle2 vs Tomcat-JDBC performance

Dieter Maurer dieter@handshake.de
Mon, 26 May 2003 20:26:16 +0200

Umberto Nicoletti wrote at 2003-5-26 08:59 +0200:
 > ...
 > So I am lead to conclude that maybe something is 'wrong' with the thread 
 > implementation in Zope/Python.
 > I read something about it and, if I recall correctly, it stated that if 
 > a thread was not 'well behaved' in the sense that prior to call a 
 > potentially locking external subroutine (as it is the case with Oracle 
 > apis, or with file I/O) it didn't release locks, it could hang the 
 > interpreter thus slowing down the whole thing including, in the case of 
 > Zope, the serving of 'static' pages.

That is right. But you will see it only for concurrent requests.

An indication for this problem is that during a long database
operation, Zope is not responsive.

As far as I know, the DCOracle adapter (I used only DCOracle
and not DCOracle2) does not have this problem. At least,
I did not observe it.

 > Do you think that stackless python could help here (please bear with me, 
 > this is a *wild* guess)?

No, it will not help with this.

The threading restriction is motivated by Python "Reference Counting"
scheme for garbage collection. To make it efficient, a global
lock is necessary. Any Python implementation with reference counting
is likely to have the Global Interpreter Lock (I found in comp.lang.python,
that there was a Python version without the GIL but it was so slow that
it was soon be dropped again).