Hi,
I'm almost ready to go on production (sort of) with two sites i'm
building built with turbogears.
After deploying with mod_python/Apacje2 on a debian box I decided to
stress the server with ab2 but, unfortunately, if I go over 10
concurrent requests, the server log (cherrypy's) gets crowded with
tracebacks like these:
15/Jan/2006:22:05:00 HTTP INFO Traceback (most recent call last):
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.0beta-py2.4.egg/cherrypy/_cphttptools.py",
line 96, in _run
applyFilters('before_main')
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.0beta-py2.4.egg/cherrypy/filters/__init__.py",
line 131, in applyFilters
method()
File "/home/alberto/turbogears/turbogears/visit.py", line 99, in
beforeMain
visit=self.get_visit()
File "/home/alberto/turbogears/turbogears/visit.py", line 139, in
get_visit
return self.new_visit()
File "/home/alberto/turbogears/turbogears/visit.py", line 122, in
new_visit
visit= TG_Visit( visit_key=visit_key, expiry=now+self.timeout )
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1197, in __init__
self._create(id, **kw)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1221, in _create
self.set(**kw)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1142, in set
self._connection._SO_update(self, args)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/dbconnection.py",
line 561, in _SO_update
self.query("UPDATE %s SET %s WHERE %s = %s" %
AttributeError: 'TG_Visit' object has no attribute 'id'
15/Jan/2006:22:05:00 HTTP INFO Traceback (most recent call last):
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.0beta-py2.4.egg/cherrypy/_cphttptools.py",
line 96, in _run
applyFilters('before_main')
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.0beta-py2.4.egg/cherrypy/filters/__init__.py",
line 131, in applyFilters
method()
File "/home/alberto/turbogears/turbogears/visit.py", line 99, in
beforeMain
visit=self.get_visit()
File "/home/alberto/turbogears/turbogears/visit.py", line 139, in
get_visit
return self.new_visit()
File "/home/alberto/turbogears/turbogears/visit.py", line 122, in
new_visit
visit= TG_Visit( visit_key=visit_key, expiry=now+self.timeout )
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1197, in __init__
self._create(id, **kw)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1224, in _create
self._SO_finishCreate(id)
File
"/usr/lib/python2.4/site-packages/SQLObject-0.7.1dev_r1500-py2.4.egg/sqlobject/main.py",
line 1242, in _SO_finishCreate
del self.sqlmeta._creating
AttributeError: _creating
ab2 says 411 requests failed (out of 500), which is intolerable for
me/my client.
I can reproduce the problem with cherrypy's built in server so I don't
think it's mod_python related. Seems to me sqlobject, multithread
related... Anyone experienced similar problems under high load?
Cheers, Alberto