I believe I figured it out, and uncovered a serious bug with the pooling
of SQLite connections.
the problem is that there is NO POOLING for sqlite connections.
from sqlite_backend.py :
class SQLiteConnection(ConnectionWrapper):
"""Connection wrapper for SQLite."""
__slots__ = ['_active_cursors']
poolable = have_pysqlite and os.name == 'nt' and sqlite_version >= 30301
problem is that my linux is not an 'nt' :), so poolable is false.
this in turn cause return_cnx to not pool the connection when it's returned:
so, effectively - there is currently no connection pooling for sqlite
for non nt machines.
so, if you put your server under stress, it spawns many many sqlite
connections, which eventually causes 'database is locked', and
'connection timeout' errors.
Omry Yadan wrote:
> Sorry for the late response.
> a reminder:
> I am using trac with wsgi, when trac comes under stress my apache server
> locks up, once it's running out of worker threads.
>
>
> You suggested that the problem may have been solved in later version of
> sqlite. I am now running with 3.5.9 and upgraded to python 2.5 -
> but the problem is still there.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Trac
Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/trac-dev?hl=en
-~----------~----~----~----~------~----~------~--~---